处理Excel的类库主要有两种JXL 和POI和介绍.

来源:互联网 发布:关于linux 的书籍 编辑:程序博客网 时间:2024/06/10 02:22
目前应用比较多的处理Excel的类库主要有两种JXL 和POI
都是开源项目,POI是apache下的子项目,经过研究和比较觉得POI更新更快一些。
到目前为止已经支持Excel2007版本了,不过目前也是3.5的beta4版以上才支持。JXL貌似还不行,但是个人觉得在使用上JXL简单一些。
另外JXL还有一个小问题需要注意一下在读取Excel文件是单次读不可以超过10000行,否则会溢出。经过试验9999可以,10000就不行了,不知道jxl为什么要控制在这个数。
因此如果兄弟们需要单次读取大数据量的时候需要手工处理下,分次读取就可以了。
因此建议处理EXCEL97-2003时可选用JXL,处理2007版本可选择POI,


JXL官网(http://jexcelapi.sourceforge.net/)
POI官网(http://poi.apache.org/)

各种用法四处都有这里只贴上JXL读取Excel97-03和POI读取Excel2007的代码:

    public List<FSNInfo> readExcel07(String filepath) throws IOException{
        List<Info> fsnList = new ArrayList<Info>(10);
        //取得excel
        XSSFWorkbook xwb = new XSSFWorkbook(filepath);
        //取得Excel的第一个sheet;
        XSSFSheet sheet = xwb.getSheetAt(0);
        XSSFRow row;
        //遍历sheet的所有行,前两个单元格,设置为Info的属性,放入ArrayList返回
        for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) { 
            Info fsn;
            row = sheet.getRow(i);
            fsn.set1(row.getCell(0).toString());
            fsn.set2(row.getCell(1).toString());
            fsnList.add(fsn);
        } 
        return fsnList;
    }

   
    public List<Info> readExcelSubRecord(int start,int len) { 
        if(wb == null)
            return null;
        List<Info> list = new ArrayList<Info>(10); 
        try { 
            Workbook book = wb; 
            Sheet se = book.getSheet(0); 
            int rownum = start+len;
            for (int i = start; i < rownum; i++) {
                
                Info fsn;
                fsn.set1(se.getCell(0, i).getContents());
                fsn.set2(se.getCell(1, i).getContents());
                list.add(fsn);
            } 
            book.close(); 
        } catch (Exception e) { 
            logger.error("Parse excel97-2003 error: "+e); 
            return null; 
        } 
        return list;
    }
原创粉丝点击