0
点赞
收藏
分享

微信扫一扫

Java(day160):全能的 Excel 操作工具类——ExcelUtils 实战指南!

舟海君 06-21 15:00 阅读 6

大家好,我是不熬夜崽崽!大家如果觉得看了本文有帮助的话,麻烦给不熬夜崽崽点个三连(点赞、收藏、关注)支持一下哈,大家的支持就是我写作的无限动力。

前言

  在开发过程中,Excel 是一个常见的文件格式,不论是在导出报告,还是读取分析数据,都离不开它。今天,我将带大家一起看看如何实现一个简单高效的 Excel 操作工具类——ExcelUtils。这个工具类不仅能帮你导出 Excel,还能读取 Excel 文件、填充模板数据、设置单元格样式等。让我们通过实际的代码来了解一下这些功能,保证你用得上,且写起来简洁高效!

1. ExcelUtils 类概述

  ExcelUtils 类是我们用来简化 Excel 操作的工具类。我们将用它来实现以下功能:

  • 导出 Excel 文件
  • 读取 Excel 文件
  • 模板填充
  • 设置单元格样式

1.1 依赖库

首先,咱们需要引入 Apache POI 库来操作 Excel 文件。在 Maven 项目中,加入以下依赖:

<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>

1.2 代码框架

接下来我们来实现 ExcelUtils 类。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.List;

public class ExcelUtils {

// 1. 导出 Excel 文件
public static void exportExcel(List<String[]> data, String filePath) throws IOException {
Workbook workbook = new XSSFWorkbook(); // 创建 Excel 工作簿
Sheet sheet = workbook.createSheet(Sheet1); // 创建工作表

// 填充数据
int rowIndex = 0;
for (String[] rowData : data) {
Row row = sheet.createRow(rowIndex++);
int cellIndex = 0;
for (String cellData : rowData) {
row.createCell(cellIndex++).setCellValue(cellData);
}
}

// 写入文件
try (FileOutputStream fileOut = new FileOutputStream(filePath)) {
workbook.write(fileOut);
} finally {
workbook.close(); // 关闭工作簿
}
}

// 2. 读取 Excel 文件
public static void readExcel(String filePath) throws IOException {
FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表

for (Row row : sheet) {
for (Cell cell : row) {
System.out.print(cell.toString() + \t);
}
System.out.println();
}
workbook.close();
fis.close();
}

// 3. 模板填充
public static void fillTemplate(String templatePath, String outputPath, List<String[]> data) throws IOException {
FileInputStream fis = new FileInputStream(templatePath);
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表

// 填充模板数据
int rowIndex = 1; // 假设从第二行开始填充
for (String[] rowData : data) {
Row row = sheet.createRow(rowIndex++);
int cellIndex = 0;
for (String cellData : rowData) {
row.createCell(cellIndex++).setCellValue(cellData);
}
}

// 写入输出文件
try (FileOutputStream fileOut = new FileOutputStream(outputPath)) {
workbook.write(fileOut);
} finally {
workbook.close();
fis.close();
}
}

// 4. 设置单元格样式
public static void setCellStyle(String filePath) throws IOException {
FileInputStream fis = new FileInputStream(filePath);
Workbook workbook = new XSSFWorkbook(fis);
Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表

// 创建单元格样式
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
font.setColor(IndexedColors.RED.getIndex());
style.setFont(font);
style.setAlignment(HorizontalAlignment.CENTER);

// 应用样式到单元格
for (Row row : sheet) {
for (Cell cell : row) {
cell.setCellStyle(style);
}
}

// 写入文件
try (FileOutputStream fileOut = new FileOutputStream(filePath)) {
workbook.write(fileOut);
} finally {
workbook.close();
fis.close();
}
}

public static void main(String[] args) throws IOException {
// 1. 导出 Excel 示例
List<String[]> data = List.of(
new String[]{ID, Name, Age},
new String[]{1, Alice, 24},
new String[]{2, Bob, 29}
);
exportExcel(data, exported.xlsx);

// 2. 读取 Excel 示例
readExcel(exported.xlsx);

// 3. 模板填充示例
List<String[]> templateData = List.of(
new String[]{Product, Price},
new String[]{Apple, 3.5},
new String[]{Banana, 2.0}
);
fillTemplate(template.xlsx, filled_template.xlsx, templateData);

// 4. 设置单元格样式示例
setCellStyle(filled_template.xlsx);
}
}

2. 解释与实现

2.1 导出 Excel

导出 Excel 功能的核心在于创建一个 Workbook 对象,并且通过 SheetRow 来填充数据。每一行数据通过 Row 创建,每个单元格则通过 Cell 填充内容。最后,使用 FileOutputStream 将数据写入文件。

2.2 读取 Excel

读取 Excel 文件的操作非常简单,我们可以使用 FileInputStream 打开文件,获取 Workbook,然后通过遍历 Sheet 中的每一行来获取每个单元格的内容。cell.toString() 可以获取单元格的值。

2.3 模板填充

模板填充通常用于从模板文件中读取内容,并根据实际数据进行填充。在 fillTemplate 方法中,我们首先读取模板文件,然后根据数据逐行填充到工作表中。

2.4 设置单元格样式

通过 CellStyleFont,我们可以给单元格应用不同的样式。在这里,我给每个单元格设置了红色加粗的字体,并将其对齐方式设为居中。

3. 总结

  通过这个 ExcelUtils 工具类,你能够轻松实现 Excel 文件的导出、读取、模板填充以及单元格样式设置。它不仅高效,还能有效减少你手动操作 Excel 的时间成本。开发者们,如果你还在为每次 Excel 操作手动编写复杂的代码而烦恼,不妨试试这个工具类吧!

举报

相关推荐

0 条评论