###1、poi简介:
poi提供API用于操作各种基于OOXML和OLE2的文件格式;OLES2在XLS、DOC、PPT格式中使用;OOXML用于Office 2007 and 2008.包括XLSX、DOCX and PPTX。我们能使用java来读写MS-Office文件;
官方介绍:https://poi.apache.org/
###2、写excel文件:
除开底层的接口,poi组件主要提供了3种接口用于操作Excel文件,HSSF、XSSF、SXSSF,其中SXSSF构建与XSSF之上的低内存API;
HSSF用于xls格式,XSSF用于xlsx格式;SXSSF构建于XSSF之上,通过将部分数据保存到硬盘的方式,降低内存占用;同时失去了移动单元格、公式支持等特性;
官方特性差异:
代码示例:
@Test
public void hssfBasicUse() throws IOException, InterruptedException {
Workbook wb = new HSSFWorkbook();
// Workbook wb = new XSSFWorkbook();
// Workbook wb = new SXSSFWorkbook();
Sheet sh = wb.createSheet();
for(int rownum = 0; rownum < 100; rownum++){
Row row = sh.createRow(rownum);
for(int cellnum = 0; cellnum < 10; cellnum++){
Cell cell = row.createCell(cellnum);
cell.setCellValue("test");
}
}
FileOutputStream out = new FileOutputStream("D:\\desktop\\sxssftest\\hssf.xls");
// FileOutputStream out = new FileOutputStream("D:\\desktop\\sxssftest\\xssf.xlsx");
// FileOutputStream out = new FileOutputStream("D:\\desktop\\sxssftest\\xsssf.xlsx");
wb.write(out);
out.close();
}
更多的官方示例:https://poi.apache.org/spreadsheet/quick-guide.html
###3、SXSSF:
SXSSF构建于XSSF之上,通过将部分数据保存到硬盘的方式,降低内存占用;通过滑动窗口(大小可配置)控制内存中可访问的行数,将不再可以访问的数据写入到硬盘临时文件中据达到目的;
官方示例如下:
import junit.framework.Assert;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellReference;
import org.apache.poi.xssf.streaming.SXSSF