springboot 框架 如何导出 excel文件
时间: 2024-05-07 22:23:41 浏览: 176
Spring Boot 框架本身并没有提供导出 Excel 文件的功能,但可以通过使用一些第三方库来实现。
以下是一种常用的方式:
1. 添加依赖
在 pom.xml 文件中添加以下依赖:
```xml
<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>
```
这两个依赖分别提供了对 Excel 文件的读写操作。
2. 编写代码
下面是一个简单的示例代码:
```java
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@Service
public class ExcelService {
public void exportExcel(List<Student> students, HttpServletResponse response) throws IOException {
// 创建 Workbook 对象
Workbook workbook = new XSSFWorkbook();
// 创建 Sheet 对象
Sheet sheet = workbook.createSheet("学生信息");
// 创建表头
Row headerRow = sheet.createRow(0);
Cell headerCell1 = headerRow.createCell(0);
headerCell1.setCellValue("学号");
Cell headerCell2 = headerRow.createCell(1);
headerCell2.setCellValue("姓名");
Cell headerCell3 = headerRow.createCell(2);
headerCell3.setCellValue("性别");
// 填充数据
int rowIndex = 1;
for (Student student : students) {
Row row = sheet.createRow(rowIndex++);
Cell cell1 = row.createCell(0);
cell1.setCellValue(student.getStudentId());
Cell cell2 = row.createCell(1);
cell2.setCellValue(student.getName());
Cell cell3 = row.createCell(2);
cell3.setCellValue(student.getGender());
}
// 设置响应头
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=students.xlsx");
// 输出到响应流
workbook.write(response.getOutputStream());
// 关闭 Workbook 对象
workbook.close();
}
}
```
这个示例代码中,我们创建了一个 `ExcelService` 类,其中有一个 `exportExcel()` 方法,该方法接受一个学生列表和一个 `HttpServletResponse` 对象作为参数。该方法会创建一个 Workbook 对象,然后创建一个名为“学生信息”的 Sheet 对象,并填充数据。最后,将 Workbook 对象输出到响应流,实现文件导出。
注意,这里使用的是 XSSFWorkbook 类来创建 Workbook 对象,因为它支持新的 xlsx 格式。如果要支持旧的 xls 格式,可以使用 HSSFWorkbook 类。
3. 调用方法
在控制器中调用 `ExcelService` 的 `exportExcel()` 方法,传入学生列表和响应对象即可实现导出 Excel 文件。
```java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@RestController
public class StudentController {
@Autowired
private ExcelService excelService;
@GetMapping("/students/export")
public void exportStudents(HttpServletResponse response) throws IOException {
List<Student> students = new ArrayList<>();
// ... 从数据库或其他地方获取学生列表
excelService.exportExcel(students, response);
}
}
```
在上面的代码中,我们通过 `@Autowired` 注解将 `ExcelService` 对象注入到控制器中,然后在 `exportStudents()` 方法中调用 `exportExcel()` 方法实现导出。最后,我们可以在浏览器中访问 `/students/export` 路径,就会自动下载一个名为“students.xlsx”的 Excel 文件。
阅读全文