当前位置:   article > 正文

在 SpringBoot 应用程序中实现 Excel 导出功能_springboot导出为excel

springboot导出为excel

在 SpringBoot 应用程序中实现 Excel 导出功能通常涉及到以下几个步骤:配置依赖项、创建 Excel 模板、定义数据模型、实现导出逻辑。

1. 配置依赖项

首先,确保在 Spring Boot 项目中配置了相关的依赖项。在 pom.xml 文件中添加以下依赖项:

  1. <dependency>
  2. <groupId>org.apache.poi</groupId>
  3. <artifactId>poi</artifactId>
  4. <version>5.1.0</version> <!-- 最新版本号 -->
  5. </dependency>
  6. <dependency>
  7. <groupId>org.apache.poi</groupId>
  8. <artifactId>poi-ooxml</artifactId>
  9. <version>5.1.0</version> <!-- 最新版本号 -->
  10. </dependency>

这些依赖项用于使用 Apache POI 库来处理 Excel 文件。

2. 创建 Excel 模板

在实现 Excel 导出功能之前,需要创建一个 Excel 模板,定义要导出的数据列。可以使用 Excel 编辑器(如 Microsoft Excel)创建模板,也可以使用代码创建模板。在这里,将使用代码创建一个简单的 Excel 模板。

  1. public class ExcelTemplate {
  2. public static void createExcelTemplate(String filePath) throws IOException {
  3. XSSFWorkbook workbook = new XSSFWorkbook();
  4. XSSFSheet sheet = workbook.createSheet("Sheet1");
  5. // 创建标题行
  6. XSSFRow headerRow = sheet.createRow(0);
  7. headerRow.createCell(0).setCellValue("ID");
  8. headerRow.createCell(1).setCellValue("Name");
  9. headerRow.createCell(2).setCellValue("Age");
  10. // 输出到文件
  11. FileOutputStream fileOut = new FileOutputStream(filePath);
  12. workbook.write(fileOut);
  13. fileOut.close();
  14. workbook.close();
  15. }
  16. public static void main(String[] args) throws IOException {
  17. createExcelTemplate("template.xlsx");
  18. }
  19. }

上述代码创建了一个包含 ID、Name 和 Age 列的 Excel 模板,并保存为 template.xlsx 文件。

3. 定义数据模型

在导出 Excel 文件之前,需要定义数据模型,即将要导出的数据的结构。在这个例子中,定义一个简单的 Student 类作为数据模型。

  1. public class Student {
  2. private Long id;
  3. private String name;
  4. private int age;
  5. // 省略构造函数、getter 和 setter 方法
  6. }

4. 实现导出逻辑

现在,已经准备好了 Excel 模板和数据模型,接下来就是实现导出逻辑。在 Spring Boot 中,可以创建一个 RESTful 控制器来处理导出请求。

  1. import org.apache.poi.ss.usermodel.*;
  2. import org.apache.poi.xssf.usermodel.XSSFWorkbook;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RestController;
  5. import javax.servlet.http.HttpServletResponse;
  6. import java.io.FileOutputStream;
  7. import java.io.IOException;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. @RestController
  11. public class ExcelController {
  12. @GetMapping("/export")
  13. public void exportToExcel(HttpServletResponse response) throws IOException {
  14. String fileName = "students.xlsx";
  15. response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
  16. response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
  17. List<Student> students = getStudents(); // 获取学生数据
  18. try (XSSFWorkbook workbook = new XSSFWorkbook()) {
  19. XSSFSheet sheet = workbook.createSheet("Students");
  20. // 创建标题行
  21. Row headerRow = sheet.createRow(0);
  22. headerRow.createCell(0).setCellValue("ID");
  23. headerRow.createCell(1).setCellValue("Name");
  24. headerRow.createCell(2).setCellValue("Age");
  25. // 填充数据行
  26. int rowNum = 1;
  27. for (Student student : students) {
  28. Row row = sheet.createRow(rowNum++);
  29. row.createCell(0).setCellValue(student.getId());
  30. row.createCell(1).setCellValue(student.getName());
  31. row.createCell(2).setCellValue(student.getAge());
  32. }
  33. workbook.write(response.getOutputStream());
  34. }
  35. }
  36. private List<Student> getStudents() {
  37. // 模拟从数据库或其他数据源获取学生数据
  38. List<Student> students = new ArrayList<>();
  39. students.add(new Student(1L, "Alice", 20));
  40. students.add(new Student(2L, "Bob", 22));
  41. students.add(new Student(3L, "Charlie", 21));
  42. return students;
  43. }
  44. }

以上代码创建了一个 RESTful 控制器 ExcelController,其中的 exportToExcel() 方法负责将学生数据导出到 Excel 文件中。该方法使用 Apache POI 库创建 Excel 工作簿和工作表,填充数据,并将生成的 Excel 文件写入 HttpServletResponse 中,从而实现导出功能。

配置 Spring Boot 应用程序

最后,确保在 Spring Boot 应用程序的配置类中添加 @ComponentScan@SpringBootApplication 注解,以扫描并加载 Excel 控制器。

  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.boot.autoconfigure.SpringBootApplication;
  3. @SpringBootApplication
  4. public class Application {
  5. public static void main(String[] args) {
  6. SpringApplication.run(Application.class, args);
  7. }
  8. }

现在,已经完成了在 Spring Boot 应用程序中实现 Excel 导出功能的步骤。当访问 /export 路径时,将会下载包含学生数据的 Excel 文件。

黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/536859
推荐阅读
相关标签
  

闽ICP备14008679号