POI报表
一、POI概述
1. POI概述
POI报表通常指基于Apache POI(Poor Obfuscation Implementation)库生成的电子表格或文档报表。Apache POI是一个开源的Java API,用于操作Microsoft Office格式文件(如Excel、Word)。在业务场景中,POI报表常用于数据导出、批量打印或动态生成结构化文档。
应用场景:
1. 数据报表生成。即将数据以Excel的形式导出。
2. 数据备份。
3. 数据批量上传。
2. Excel的两种形式
目前市面上的Excel分为两个大的版本,分别是Excel2003和Excel2007两个版本,之所以分为这两个版本是因为Excel底层的实现不一样。当然,区分这两个版本可以用后缀判断。
Excel 2003 | Excel 2007 | |
后缀 | xls | xlsx |
结构 | 二进制格式,其核心结构是复合文档类型的结构 | xml类型结构 |
单sheet数据量 | 65535 行; 256列 | 1048576行;16384列 |
特点 | 存储容量有限 | 基于xml压缩,占用内,存小,操作效率高 |
3. 常见的Excel操作工具
常见的操作工具有两种,分别是JXL和POI。
- JXL: 只能对Excel进行操作,属于比较老的框架,它只支持到Excel95-2000的版本,现在已经停止更新和维护了。
- POI: 是apache的项目,对Word、Excel、PPT进行操作,包括office2003和2007, Excel 2003和 Excel2007。POI现在一直在维护,所以一般使用POI。
4. POI API 介绍
API | 描述 |
Workbook | Excel的文档对象,针对不同的Excel类型分为:HSSFWorkbook(2003)和 XSSFWorkbool (2007) |
Sheet | Excel的表单 |
Row | Excel的行 |
Cell | Excel的格子单元 |
Font | Excel字体 |
CellStyle | 格子单元样式 |
5. POI 结构说明
HSSF提供读写Microsoft Excel XLS格式档案的功能。
XSSF提供读写Microsoft Excel OOXMLXLSX格式档案的功能。
HWPF提供读写Microsoft Word DOC格式档案的功能。
HSLF提供读写Microsoft PowerPoint格式档案的功能。
HDGF提供读Microsoft Visio格式档案的功能。
HPBF提供读Microsoft Publisher格式档案的功能。
HSMF提供读Microsoft Outlook格式档案的功能。
二、POI入门案例
1. 将数据导出到Excel
1. 生成Excel表
1. 引入meven依赖
<!-- POI,对Excel操作-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.2.2</version>
</dependency>
<!-- 由于Excel内核有2003和2007版本,这里导入的2007,基于xml格式的依赖-->
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.2.2</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.1.1</version>
</dependency>
2. 在测试类中编写如下代码,运行后可以在指定的路径找到生成的excel表。
/*POI测试*/@Testpublic void testPOI() throws IOException {// 1. 创建工作簿, HSSFWorkbook 是2003版本; XSSFWorkbook 2007版本XSSFWorkbook wb = new XSSFWorkbook();//2. 创建表sheetXSSFSheet sheet = wb.createSheet("测试");//3. 文件流FileOutputStream fis = new FileOutputStream("Z:\\excel\\员工导出.xlsx");//4. 写入文件wb.write(fis);//5. 关闭流fis.close();}
2. 写入数据
当然,上面只是生成了一个Excel文档,但并没有在表格里写入数据。