如何使用Java访问微软的Excel

1、简介
  在Java中可以使用 JExcelAPI和 Apache POI两种方式访问微软的Excel文件。两者都提供了相当漂亮的操作接口。下面,简单介绍两者的使用方式,并简单比较。

2、对比
  1)、 JExcelAPI不适合商业应用,它都是会莫名其妙的读不出来数据。
  2)、 Apache POI是一纯Java的实现,不仅能读微软的Excel还可以读Open Office的,新版HSSF3.0还添加了读取Power Point的功能。总之是一种非常稳定,强大的实现。推荐使用。
  3)
3、使用 jexcelapi
File fp = new File(file);
try {
    Workbook wb = Workbook.getWorkbook(fp);
    Sheet sheet = wb.getSheet(0);
    int columns = sheet.getColumns();
    int rows = sheet.getRows();

    String data;
    for(int col = 0;col < columns;col++) {
        for(int row = 0;row < rows;row++) {
            data = sheet.getCell(col, row).getContents();
            // Your code here
        }
    }
} catch(Exception ioe) {
    System.out.println("Error: " + ioe);
}


4、 使用POI
  POI包括:
POIFS:读写OLE2文档。
HSSF:读写Excel文档。
HWPF:读和受限的写Word文档。
HWSL:读和受限的写PowerPoint文档。

使用HSSF的例子:
try {
POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(file));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
HSSFRow row;
HSSFCell cell;

int rows; // No of rows
rows = sheet.getPhysicalNumberOfRows();

int cols = 0; // No of columns
int tmp = 0;

// This trick ensures that we get the data properly even if it doesn’t start from first few rows
for(int i = 0; i < 10 || i < rows; i++) {
row = sheet.getRow(i);
if(row != null) {
tmp = sheet.getRow(i).getPhysicalNumberOfCells();
if(tmp > cols) cols = tmp;
}
}

for(int r = 0; r < rows; r++) {
row = sheet.getRow(r);
if(row != null) {
for(int c = 0; c < cols; c++) {
cell = row.getCell((short)c);
if(cell != null) {
// Your code here
}
}
}
}
} catch(Exception ioe) {
ioe.printStackTrace();
}



你可能感兴趣的:(java,exception,Excel,文档,微软,powerpoint)