Java Excel 读取与写入(合并单元格)
在使用 Java 进行 Excel 文件的读取和写入时,使用 Apache POI 库是一个非常普遍的做法。本文将向你展示如何在 Java 中使用 Apache POI 执行 Excel 的读取与写入操作,并实现合并单元格的功能。
流程概述
首先,我们概述一下整个流程,下面是实现步骤的表格:
步骤 | 描述 | 代码示例 |
---|---|---|
1 | 引入 Apache POI 依赖 | pom.xml 中添加依赖 |
2 | 创建工作簿和工作表 | Workbook 和 Sheet |
3 | 写入数据 | 使用 Row 和 Cell |
4 | 合并单元格 | sheet.mergeCells |
5 | 写入 Excel 文件 | FileOutputStream |
6 | 读取 Excel 文件 | 使用 FileInputStream |
步骤详解
1. 引入 Apache POI 依赖
在 pom.xml 中添加 Apache POI 的依赖。如果你使用的是 Maven,可以使用以下依赖:
<dependencies>
<!-- Apache POI for Excel -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.3</version> <!-- 请根据需要修改版本 -->
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.3</version>
</dependency>
</dependencies>
2. 创建工作簿和工作表
接下来,我们在 Java 中创建一个工作簿和工作表。
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.ss.usermodel.Sheet;
// 创建工作簿
Workbook workbook = new XSSFWorkbook(); // 使用 XSSFWorkbook 创建新的 Excel 工作簿
// 创建工作表
Sheet sheet = workbook.createSheet("Example Sheet"); // 创建一个名为“Example Sheet”的工作表
3. 写入数据
在工作表中写入数据,使用 Row
和 Cell
。
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
// 创建第一行
Row row = sheet.createRow(0); // 创建第 0 行
// 创建单元格
Cell cell1 = row.createCell(0); // 创建第一个单元格
cell1.setCellValue("姓名"); // 设置单元格值
Cell cell2 = row.createCell(1); // 创建第二个单元格
cell2.setCellValue("年龄"); // 设置单元格值
// 创建第二行
Row row2 = sheet.createRow(1); // 创建第 1 行
Cell cell3 = row2.createCell(0);
cell3.setCellValue("张三"); // 设置单元格值
Cell cell4 = row2.createCell(1);
cell4.setCellValue(30); // 设置单元格值
4. 合并单元格
对于合并单元格,我们需要使用 mergeCells
方法。
// 合并第一行的前两个单元格
sheet.addMergedRegion(new org.apache.poi.ss.util.CellRangeAddress(0, 0, 0, 1));
// 第一参数是起始行,第二个是结束行,第三个是起始列,第四个是结束列
5. 写入 Excel 文件
完成数据写入后,我们需要将其写入文件中。
import java.io.FileOutputStream;
// 定义输出文件
FileOutputStream fileOut = new FileOutputStream("example.xlsx"); // 定义输出的 Excel 文件名
workbook.write(fileOut); // 将数据写入文件
fileOut.close(); // 关闭文件输出流
workbook.close(); // 关闭工作簿
6. 读取 Excel 文件
现在,我们可以读取刚刚创建的 Excel 文件。
import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.WorkbookFactory;
FileInputStream fileInputStream = new FileInputStream("example.xlsx");
Workbook workbookRead = WorkbookFactory.create(fileInputStream);
Sheet sheetRead = workbookRead.getSheetAt(0); // 获取第一个工作表
// 读取数据
for (Row row : sheetRead) { // 遍历所有行
for (Cell cell : row) { // 遍历每行中的所有单元格
System.out.print(cell.toString() + "\t"); // 打印单元格内容
}
System.out.println(); // 换行
}
fileInputStream.close(); // 关闭输入流
workbookRead.close(); // 关闭工作簿
甘特图
以下是项目的甘特图,展示了我们实施过程中的主要任务和时间安排。
gantt
title Excel 操作过程
dateFormat YYYY-MM-DD
section 前期准备
引入依赖 :a1, 2023-10-01, 1d
section 创建工作簿
创建工作簿和表 :a2, 2023-10-02, 1d
section 写入数据
写入数据 :a3, 2023-10-03, 1d
section 合并单元格
合并单元格 :a4, 2023-10-04, 1d
section 输出文件
写入 Excel 文件 :a5, 2023-10-05, 1d
section 读取数据
读取 Excel 文件 :a6, 2023-10-06, 1d
关系图
以下是实现过程中的数据关系图,帮助我们理解不同组件之间的关系。
erDiagram
User {
string name
int age
}
Excel {
string file_name
string content
}
User ||--|| Excel : has
结论
通过本篇文章,相信你对如何使用 Java 和 Apache POI 杓具来实现 Excel 的读取和写入(包括合并单元格)有了更深入的理解。合并单元格可以帮助我们更好地组织和展示数据,而读取功能则使我们能够灵活地从现有文件中获取所需信息。
希望这篇文章能够帮助你顺利实现 Excel 操作的相关功能,如果你还有其他问题或需要更深入的指导,欢迎继续交流和探索。