Apache POI 是一套开源的 Java 库,用于读取和写入 Microsoft Office 文档格式,如 Excel、Word 和 PowerPoint。Spring Boot 是一个流行的 Java 应用程序框架,用于简化 Spring 应用的开发和部署。将 Apache POI 与 Spring Boot 结合使用,可以在 Spring Boot 应用中轻松地处理 Office 文档。
Apache POI 简介
Apache POI 提供了几个主要的组件来处理不同类型的 Office 文件:
-
HSSF 和 XSSF:用于处理 Excel 文件(
.xls
和.xlsx
)。 -
HWPF 和 XWPF:用于处理 Word 文件(
.doc
和.docx
)。 -
HSLF 和 XSLF:用于处理 PowerPoint 文件(
.ppt
和.pptx
)。
Spring Boot 整合 Apache POI
在 Spring Boot 应用中整合 Apache POI 主要包括添加依赖、编写服务层代码来处理 Office 文档、以及创建控制器来响应用户请求。
1. 添加依赖
首先,在项目的 pom.xml
文件中添加 Apache POI 的依赖。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.0.0</version>
</dependency>
2. 编写服务层代码
接下来,编写服务层代码来处理 Excel 文件的读写。这里以写入 Excel 文件为例。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import java.io.FileOutputStream;
import java.io.IOException;
@Service
public class ExcelService {
public void writeExcel(String fileName) {
Workbook workbook = new XSSFWorkbook(); // 创建 XSSFWorkbook 对象,用于 .xlsx 文件
Sheet sheet = workbook.createSheet("Users"); // 创建一个工作表
// 创建标题行
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("ID");
headerRow.createCell(1).setCellValue("Name");
headerRow.createCell(2).setCellValue("Email");
// 填充数据(这里仅作示例,实际数据应从数据库或其他来源获取)
Row dataRow = sheet.createRow(1);
dataRow.createCell(0).setCellValue(1);
dataRow.createCell(1).setCellValue("John Doe");
dataRow.createCell(2).setCellValue("john.doe@example.com");
// 写入文件
try (FileOutputStream outputStream = new FileOutputStream(fileName)) {
workbook.write(outputStream);
workbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
3. 创建控制器
创建一个控制器来响应用户的请求,调用服务层代码生成 Excel 文件。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/excel")
public class ExcelController {
@Autowired
private ExcelService excelService;
@GetMapping("/write")
public String writeExcel() {
String fileName = "users.xlsx";
excelService.writeExcel(fileName);
return "Excel file written successfully: " + fileName;
}
}
总结
这个示例展示了如何在 Spring Boot 应用中使用 Apache POI 来创建一个简单的 Excel 文件。通过类似的方式,你可以扩展服务层和控制器来支持更复杂的操作,包括读取 Excel 文件、处理 Word 和 PowerPoint 文件等。Apache POI 提供了丰富的 API 来支持各种 Office 文件操作,而 Spring Boot 则让构建和部署应用变得更加简单。结合两者,可以有效地开发能够处理 Office 文档的企业级应用。