Jakarta POI 3.0

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值