POI
简介
Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta
POI有很多组件组成,其中有用于操作Excel格式文件的HSSF和用于操作Word的HWPF,在各种组件中目前只有用于操作Excel的HSSF相对成熟。
POI提供了HSSF、XSSF以及SXSSF三种方式操作Excel
HSSF:Excel97-2003版本,扩展名为.xls。一个sheet最大行数65536,最大列数256。
XSSF:Excel2007版本开始,扩展名为.xlsx。一个sheet最大行数1048576,最大列数16384。
SXSSF:是在XSSF基础上,POI3.8版本开始提供的支持低内存占用的操作方式,扩展名为.xlsx。
注意:xssf是将数据存在内存,所以为了防止内存溢出,就出现了sxssf
SXSSFWorkbook w3= new SXSSFWorkbook(1000);
上面 SXSSFWorkbook
设置内存中最多只有1000行数据,当超过这个数据时,就将内存之前的数据删除,并且会在硬盘中生成临时文件。从而保证了低内存消耗。
Jakarta POI HSSF API组件:
组件 |
描述 |
HSSFWorkbook |
excel的文档对象 |
HSSFSheet |
excel的表单 |
HSSFRow |
excel的行 |
HSSFCell |
excel的格子单元 |
HSSFFont |
excel字体 |
HSSFCellStyle |
cell样式 |
Jakarta POI XSSFAPI组件:
组件 |
描述 |
XSSFWorkbook |
excel的文档对象 |
XSSFSheet |
excel的表单 |
XSSFFRow |
excel的行 |
XSSFCell |
excel的格子单元 |
XSSFFont |
excel字体 |
XSSFCellStyle |
cell样式 |
导出
pom.xml
1 2 3 4 5
| <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.14</version> </dependency>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| public void exportExcel(){ XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet xssfSheet = xssfWorkbook.createSheet("sheet名称"); XSSFRow title = sheet.createRow(0); String[] titleNameArr = {"姓名","班级","学号","性别","兴趣"}; for(int i=0;i<titleNameArr.length; i++){ sheet.setColumnWidth(i, 15 * 256); XSSFCell titleCell = title.createCell(i); titleCell.setCellValue(titleNameArr[i]); } List<Student> studentList = queryData(); for(int i=0,rowIndex=1;i<studentList.length;i++,rowIndex++){ XSSFRow dataRow = sheet.createRow(rowIndex); Student student = studentList.get(i); String[] excelEntityyArr ={student.getName(),stuent.getClassName(),student.getNo(),student.getSex(),student.getHobby()}; dataRow.createCell(j).setCellValue(excelEntityProperyArr[j]); response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("表名.xlsx", "UTF-8")); ServletOutputStream out = response.getOutputStream(); xssfWorkbook.write(out); out.close(); } }
|
设置样式
1 2 3 4 5 6 7 8
| XSSFFont font = workbook.createFont(); font.setFontName("方正楷体"); font.setFontHeightInPoints((short) 12); font.setBold(true); XSSFCellStyle cellStyle = workbook.createCellStyle(); cellStyle.setAlignment(HorizontalAlignment.CENTER); cellStyle.setFont(font);
|
其他
SpringBoot+Poi+ajax实现导出 excel