Jakarta POI 3.0——访问微软Office的Java API
<a href="http://poi.apache.org/">http://poi.apache.org/</a>
久负盛名的Java类库,提供读写微软Office某些文档格式能力的Jakarta POI已经发布3.0版本。这个发布版本增加了对MS Excel公式的支持,改善了对PowerPoint的支持,以及对MS Word文档的图像抽取功能。
POI的用户还通过许多子项目来处理这些格式的不同形式:
POIFS
对于MS Office文档文件结构的访问
HSSF
MS Excel数据访问
HWPF
MS Word数据访问
HPSF
Office文档的属性访问
HSLF
PowerPoint数据访问
POI-Ruby
对gcj编译类库的Ruby绑定
提供的编程范例相对简单。开发者可以使用POIFS以流的形式创建或打开文档,然后将其连接到适当的数据访问API(HSSF,HWPF,或者HSLF),从而与内容发生真实的交互。Angsuman Chakraborty撰写了一篇简短的文章来给出使用POI读取Excel文件的细节,这是一个非常好的介绍和快速开发指南。
这标志着POI在被提升为顶级Apache项目前,在Jakarta子项目下最后一次发布版本。
How to read Excel Excel Spreadsheet from Java using Jakarta POI (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();
}
===================================================================
How to access Excel Spreadsheet using 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);
}