POI终极解决方案:模板开发

来源:互联网 发布:淘宝网电动车阳伞 编辑:程序博客网 时间:2024/06/16 08:56

这里写图片描述

InputStream is = new FileInputStream(new File("c:\\tOUTPRODUCT.xls"));        Workbook wb = new HSSFWorkbook(is);     //打开一个模板文件,工作簿        Sheet sheet = wb.getSheetAt(0);         //获取到第一个工作表        Row nRow = null;        Cell nCell = null;        int rowNo = 0;                          //行号        int colNo = 1;                          //列号        //获取模板上的单元格样式        nRow = sheet.getRow(2);        //客户的样式        nCell = nRow.getCell(1);        CellStyle customStyle = nCell.getCellStyle();   

POI升级xls excel2003 xlsx 2007以上版本

1) 升级对象
2) 升级模板
3) 升级写出的xlsx

POI 百万数据的打印

1) 从数据库读取数据,LIST在构造时十分耗费内存,还占用CPU资源
2) Xlsx一个单sheet可以支持1048576条数据。它加工这些数据时,都是暂时放在内存中。报内存堆溢出。

POI意识到这个问题,它在高版本解决了海量数据导出时性能问题。可以实现非常平滑的导出。

优化方法

1) TOMCAT 启动参数变大
2) Myeclipse启动参数调整
3) Jvm启动参数调整
4 ) POI ooxml SXSSF对象

        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi</artifactId>            <version>3.9</version>        </dependency>        <dependency>            <groupId>org.apache.poi</groupId>            <artifactId>poi-ooxml</artifactId>            <version>3.9</version>        </dependency>

这里写图片描述

原理和思路:
在打印过程中,已经加工完的对象,临时存到一个临时文件中,它采用xml临时文件。最终处理完时,将这些临时内容写入到最终的xlsx文件中。

这个对象不能使用模板。
只能用于到数据量的导出。(没有格式)

d) 实际工作中

HSSF 比较多,兼顾客户的环境
XSSF 应用比较少,当数据量比较大时,才采用
SXSSF 只用在海量数据的导出

0 0
原创粉丝点击