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