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

这里写图片描述

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 只用在海量数据的导出

发布了30 篇原创文章 · 获赞 8 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/wsl9420/article/details/53152603