POI简介
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft office格式档案读和写的功能,其中包括Excel,Word,PowerPoint等。
官方网站:poi.apache.org/
POI前置知识
1. 坐标
Excel中每一个单元格都是有一个坐标的,起始坐标为(0,0),也就是说起始行为第0行,起始列为第0列。
Excel中每一个Sheet也是有下标的,从0开始。
2. 数据类型
POI中定义了6种单元格数据类型,每一个数据类型使用一个数字常量来表示:
- CELL_TYPE_NUMERIC:值是0,数字类型和日期类型(int,float,Date...)
- CELL_TYPE_STRING:值是1,字符串类型(String)
- CELL_TYPE_FORMULA:值是2,计算公式类型
- CELL_TYPE_BLANK:值是3,空类型,表示单元格里什么都没有(null)
- CELL_TYPE_BOOLEAN:值是4,布尔类型(boolean)
- CELL_TYPE_ERROR:值是5,类型错误
存储在Excel中最常见的莫过于字符数据和数值数据了:
-
字符数据类似于"abc"、"ab123"等,POI默认以CELL_TYPE_STRING类型存储,通过POI转成Java中的类型是String。
-
数值和日期数据类似于"123"、"2021/12/8"(将日期使用特定算法计算成数字)等,POI默认以CELL_TYPE_NUMERIC类型存储,通过POI转成Java中的类型是double。
如果Excel需要存储类似于手机号这样的数据,默认是CELL_TYPE_NUMERIC类型,但是可以自行修改类型为CELL_TYPE_STRING。
-
布尔数据类似于"TRUE"、"true",POI默认以CELL_TYPE_BOOLEAN类型存储,通过POI转成Java中的类型是boolean。
3. 文件类型
Excel经历了两次大变革,就是在Excel 2003和Excel 2007。
在Excel 2003之前,只支持后缀为 .xls
的文件,而Excel 2007之后支持了后缀为 .xls
和 .xlsx
两种后缀的文件。
因此POI针对 .xls
和 .xlsx
两种文件分别提供了两套独立的读写接口,分别是HSSF和XSSF。
4. 前置工作
在xml文件中导入依赖:
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</