springboot 整合Excel
时间: 2023-09-06 17:07:16 浏览: 99
Spring Boot 可以使用 Apache POI 库来操作 Excel,实现 Excel 文件的读写。下面是使用 Spring Boot 实现 Excel 文件读写的示例代码:
1. 添加 Apache POI 依赖。
在 pom.xml 文件中添加以下依赖:
```xml
<!-- Apache POI -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
```
2. 定义 Excel 模板。
在 resources 目录下创建一个名为 template.xlsx 的 Excel 模板文件,模板文件中包含一个名为 Sheet1 的工作表,其中第一行为表头,第二行为数据。
3. 定义实体类。
定义一个实体类来表示 Excel 中的数据,例如:
```java
public class ExcelData {
private String name;
private Integer age;
// 省略 getter/setter 方法
}
```
4. 实现 Excel 文件导入功能。
```java
@RestController
public class ExcelController {
@PostMapping("/import")
public List<ExcelData> importExcel(@RequestParam("file") MultipartFile file) throws IOException {
// 读取 Excel 文件
Workbook workbook = WorkbookFactory.create(file.getInputStream());
Sheet sheet = workbook.getSheetAt(0);
// 解析 Excel 数据
List<ExcelData> data = new ArrayList<>();
for (int i = 1; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
ExcelData item = new ExcelData();
item.setName(row.getCell(0).getStringCellValue());
item.setAge((int) row.getCell(1).getNumericCellValue());
data.add(item);
}
return data;
}
}
```
5. 实现 Excel 文件导出功能。
```java
@RestController
public class ExcelController {
@GetMapping("/export")
public void exportExcel(HttpServletResponse response) throws IOException {
// 创建 Excel 文件
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet1");
// 写入表头
Row headerRow = sheet.createRow(0);
headerRow.createCell(0).setCellValue("姓名");
headerRow.createCell(1).setCellValue("年龄");
// 写入数据
List<ExcelData> data = getData();
for (int i = 0; i < data.size(); i++) {
Row row = sheet.createRow(i + 1);
ExcelData item = data.get(i);
row.createCell(0).setCellValue(item.getName());
row.createCell(1).setCellValue(item.getAge());
}
// 输出 Excel 文件
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setHeader("Content-Disposition", "attachment; filename=\"data.xlsx\"");
OutputStream outputStream = response.getOutputStream();
workbook.write(outputStream);
outputStream.close();
}
private List<ExcelData> getData() {
// 构造测试数据
List<ExcelData> data = new ArrayList<>();
data.add(new ExcelData("张三", 20));
data.add(new ExcelData("李四", 25));
data.add(new ExcelData("王五", 30));
return data;
}
}
```
以上代码实现了一个简单的 Excel 文件读写功能,可以将 Excel 文件上传到服务器并读取其中的数据,也可以将数据写入 Excel 文件并下载到客户端。
阅读全文