Apache POI轻松驾驭Excel数据处理的奥秘与实用技巧详解

Apache POI 是一个开源的 Java 库,专门用于处理 Microsoft Office 文档,尤其是 Excel 文件。它允许你轻松地读取、写入和操作 Excel 文件,为数据分析和处理提供了强大的工具。本文将深入探讨 Apache POI 在 Excel 数据处理中的奥秘和实用技巧,帮助你高效地掌握这一工具。
一、Apache POI 简介
1.1 什么是 Apache POI
Apache POI(Poor Obfuscation Implementation)是一个 Java 库,由 Apache 软件基金会提供。它允许 Java 程序读取、写入和操作 Microsoft Office 文件,包括 Excel、Word 和 PowerPoint。对于 Excel 文件,POI 提供了对 .xls 和 .xlsx 格式的支持。
1.2 POI 的主要组件
HSSF
:用于处理 Microsoft Excel 格式 (.xls) 的 API。
XSSF
:用于处理 Office Open XML 格式 (.xlsx) 的 API。
SXSSF
:用于处理大型 .xlsx 文件的 API,优化内存使用。
二、安装和配置 Apache POI
2.1 下载 POI
你可以从 Apache 官网下载最新版本的 POI。
https://poi.apache.org/download.html
2.2 添加依赖
如果你使用 Maven,可以在
pom.xml
中添加 POI 的依赖:

org.apache.poi
poi
5.2.2

对于 Gradle 用户,添加以下依赖:
implementation ‘org.apache.poi:poi:5.2.2’
三、使用 Apache POI 读取 Excel 文件
3.1 读取 .xls 文件
使用 HSSF 创建一个工作簿,然后遍历工作表和工作行。
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.File;
import java.io.FileInputStream;

public class ReadExcel {
public static void main(String[] args) throws Exception {
FileInputStream file = new FileInputStream(new File(“example.xls”));
Workbook workbook = new HSSFWorkbook(file);
Sheet sheet = workbook.getSheetAt(0);

for (Row row : sheet) {
for (Cell cell : row) {
printCellValue(cell);
}
System.out.println();
}
workbook.close();
file.close();
}

private static void printCellValue(Cell cell) {
switch (cell.getCellType()) {
case STRING:
System.out.print(cell.getStringCellValue() + “\t”);
break;
case NUMERIC:
System.out.print(cell.getNumericCellValue() + “\t”);
break;
// 更多 cell type 处理
}
}
}
3.2 读取 .xlsx 文件
使用 XSSF 创建工作簿,处理方式与 HSSF 类似。
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ReadExcelX {
public static void main(String[] args) throws Exception {
FileInputStream file = new FileInputStream(new File(“example.xlsx”));
Workbook workbook = new XSSFWorkbook(file);
// 处理逻辑与 HSSFWorkbook 相同
}
}
四、使用 Apache POI 写入 Excel 文件
4.1 创建和写入 .xls 文件
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;

import java.io.FileOutputStream;

public class WriteExcel {
public static void main(String[] args) throws Exception {
Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet(“Sheet1”);

Row row = sheet.createRow(0);
Cell cell1 = row.createCell(0);
cell1.setCellValue(“Hello”);
Cell cell2 = row.createCell(1);
cell2.setCellValue(123);

FileOutputStream fileOut = new FileOutputStream(“output.xls”);
workbook.write(fileOut);
fileOut.close();
workbook.close();
}
}
4.2 创建和写入 .xlsx 文件
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class WriteExcelX {
public static void main(String[] args) throws Exception {
Workbook workbook = new XSSFWorkbook();
// 处理逻辑与 HSSFWorkbook 相同
}
}
五、Apache POI 实用技巧
5.1 处理大型 Excel 文件
使用 SXSSF 可以有效地处理大型 Excel 文件,减少内存消耗。
”`java
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
public class LargeExcel {
public static void main(String[] args) throws Exception {
Workbook workbook = new SXSSFWorkbook();
Sheet