一、什么是POI
Apache POI 是一种流行的API,可以使用Java读写MS Excel文件,可以使用Java读写MS Word和MS PowerPoint文件。
POI主要模块
模块名字 | 描述 |
---|---|
HSSF | 提供读写Microsoft Excel XLS格式(Microsoft Excel 97 (-2003))档案的功能 |
XSSF | 提供读写Microsoft Excel OOXML XLSX格式(Microsoft Excel XML (2007+))档案的功能 |
SXSSF | 提供低内存占用量读写Microsoft Excel OOXML XLSX格式档案的功能 |
HWPF | 提供读写Microsoft Word DOC97格式(Microsoft Word 97 (-2003))档案的功能 |
XWPF | 提供读写Microsoft Word DOC2003格式(WordprocessingML (2007+))档案的功能 |
HSLF/XSLF | 提供读写Microsoft PowerPoint格式档案的功能 |
HDGF/XDGF | 提供读Microsoft Visio格式档案的功能 |
HPBF | 提供读Microsoft Publisher格式档案的功能 |
HSMF | 提供读Microsoft Outlook格式档案的功能 |
二、操作Excel常用类
HSSFWorkbook excel文档对象
HSSFSheet excel的sheet
HSSFRow excel的行
HSSFCell excel的单元格
HSSFFont excel字体
HSSFName 名称
HSSFDataFormat 日期格式
HSSFHeader sheet头
HSSFFooter sheet尾
HSSFCellStyle cell样式
HSSFDateUtil 日期
HSSFPrintSetup 打印
HSSFErrorConstants 错误信息表
三、操作Excel
3.1、搭建环境
- 创建Maven项目
- 导入依赖
<dependencies>
<!--easyexcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.0-beta2</version>
</dependency>
<!-- xls03版本-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- xlsx07版本-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.9</version>
</dependency>
<!-- 日期格式化工具-->
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
3.2、写操作
3.2.1、Excel.xls(03)版本写
- 创建测试方法
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.junit.Test;
import java.io.FileOutputStream;
public class TestWrite {
//生成的文档的地址为桌面
String path = "C:\\Users\\彬彬\\Desktop\\";
/**
* 测试Excel.xls03版本
*/
@Test
public void writeXls03 () throws Exception {
//创建文档对象
Workbook wk =new HSSFWorkbook();
//通过文档对象创建工作簿
Sheet sheet = wk.createSheet();
//通过工作簿对象创建行 0代表第一行
Row row=sheet.createRow(0);
//通过行对象创建列(单元格),0代表第一列
Cell cell = row.createCell(0);
cell.setCellValue("这是第一行第一列");
Cell cell1 = row.createCell(1);
cell1.setCellValue("这是第一行第二列");
Row row1 = sheet.createRow(