当前位置: 首页 > news >正文

Spring Boot 导出 Excel 文件

本文将详细介绍如何使用 Spring Boot 和 Apache POI 实现 Excel 文件的导出功能,帮助开发者快速上手。

1. 准备工作

首先,确保你的 Spring Boot 项目已成功创建并运行。接下来,需要在 pom.xml 文件中添加 Apache POI 相关依赖,以支持 Excel 文件的读写操作。

Maven 依赖

pom.xml 中添加以下依赖:

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

2. 创建数据模型

我们需要一个数据模型来表示要导出的数据。例如,我们可以创建一个 RoadTrafficFeatures 类,包含驾驶员数量、汽车数量、道路里程和地区等属性。

public class RoadTrafficFeatures {private int driverNum;private int carsNum;private double roadMileage;private String area;public RoadTrafficFeatures(int driverNum, int carsNum, double roadMileage, String area) {this.driverNum = driverNum;this.carsNum = carsNum;this.roadMileage = roadMileage;this.area = area;}// Getters
}

3. 实现 Excel 导出服务

接下来,我们将实现一个服务类 ExcelExportService,负责生成 Excel 文件。我们将使用 Apache POI 创建一个新的 Excel 工作簿,并填充数据。

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.stereotype.Service;import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;@Service
public class ExcelExportService {public ByteArrayOutputStream exportToExcel(List<RoadTrafficFeatures> featuresList) throws IOException {Workbook workbook = new XSSFWorkbook();Sheet sheet = workbook.createSheet("Road Traffic Features");// 设置列宽sheet.setColumnWidth(0, 4000); // Driver Numsheet.setColumnWidth(1, 4000); // Cars Numsheet.setColumnWidth(2, 6000); // Road Mileagesheet.setColumnWidth(3, 4000); // Area// 创建样式CellStyle headerStyle = createCellStyle(workbook, true);CellStyle normalStyle = createCellStyle(workbook, false);// 创建表头Row headerRow = sheet.createRow(0);String[] headers = {"Driver Num", "Cars Num", "Road Mileage", "Area"};for (int i = 0; i < headers.length; i++) {Cell cell = headerRow.createCell(i);cell.setCellValue(headers[i]);cell.setCellStyle(headerStyle);}// 填充数据int rowNum = 1;for (RoadTrafficFeatures feature : featuresList) {Row row = sheet.createRow(rowNum++);createCell(row, 0, feature.getDriverNum(), normalStyle);createCell(row, 1, feature.getCarsNum(), normalStyle);createCell(row, 2, feature.getRoadMileage(), normalStyle);createCell(row, 3, feature.getArea(), normalStyle);}// 写入到输出流ByteArrayOutputStream outputStream = new ByteArrayOutputStream();workbook.write(outputStream);workbook.close();return outputStream;}private CellStyle createCellStyle(Workbook workbook, boolean isHeader) {CellStyle style = workbook.createCellStyle();if (isHeader) {Font font = workbook.createFont();font.setBold(true);style.setFont(font);}style.setBorderTop(BorderStyle.THIN);style.setBorderBottom(BorderStyle.THIN);style.setBorderLeft(BorderStyle.THIN);style.setBorderRight(BorderStyle.THIN);style.setAlignment(HorizontalAlignment.CENTER);style.setVerticalAlignment(VerticalAlignment.CENTER);return style;}private void createCell(Row row, int columnIndex, Object value, CellStyle style) {Cell cell = row.createCell(columnIndex);if (value instanceof Integer) {cell.setCellValue((Integer) value);} else if (value instanceof Double) {cell.setCellValue((Double) value);} else {cell.setCellValue((String) value);}cell.setCellStyle(style);}
}

4. 创建控制器

最后,我们需要创建一个控制器 ExcelExportController,处理导出请求并返回生成的 Excel 文件。

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 ExcelExportController {@Autowiredprivate ExcelExportService excelExportService;@GetMapping("/export")public void export(HttpServletResponse response) throws IOException {// 模拟数据List<RoadTrafficFeatures> featuresList = new ArrayList<>();featuresList.add(new RoadTrafficFeatures(1, 2, 100.5, "Urban"));featuresList.add(new RoadTrafficFeatures(2, 3, 150.0, "Suburban"));ByteArrayOutputStream outputStream = excelExportService.exportToExcel(featuresList);response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setHeader("Content-Disposition", "attachment; filename=road_traffic_features.xlsx");response.getOutputStream().write(outputStream.toByteArray());response.getOutputStream().flush();}
}

5. 启动应用

确保 Spring Boot 应用正常启动后,访问 http://localhost:8080/export 即可下载生成的 Excel 文件。

6. 总结

通过以上步骤,我们实现了一个简单的 Spring Boot 应用,能够导出 Excel 文件并设置每个单元格的宽度。这一功能在数据管理和报告生成中非常实用。你可以根据需要进一步扩展功能,例如添加更多的样式、数据验证和图表等。希望这篇文章能帮助你快速上手 Excel 文件导出功能!

http://www.lryc.cn/news/479244.html

相关文章:

  • HTTPSOK:SSL/TLS证书自动续期工具
  • Uniapp安装Pinia并持久化(Vue3)
  • 基于Dpabi和spm12的脑脊液(csf)分割和提取笔记
  • 【每日一题】2012考研数据结构 - 求字符串链表公共后缀
  • 数据结构和算法-贪心算法01- 认识贪心
  • Bash Shell - 获取日期、时间
  • runnable和callable区别和底层原理
  • Springboot 整合 Java DL4J 打造自然语言处理之语音识别系统
  • 虚幻引擎5(UE5)学习教程
  • 从0开始深度学习(26)——汇聚层/池化层
  • 兼职发薪系统:高效、便捷的劳务发薪解决方案
  • MySQL数据库单表查询习题
  • 多模态PaliGemma——Google推出的基于SigLIP和Gemma的视觉语言模型
  • 电路原理:电阻桥。
  • 实践出真知:MVEL表达式中for循环的坑
  • Flutter运行App时出现“Running Gradle task ‘assembleDebug“问题解决
  • 基于SSM(Spring + Spring MVC + MyBatis)框架的咖啡馆管理系统
  • 【SpringBoot】18 上传文件到数据库(Thymeleaf + MySQL)
  • 计算机体系结构之系统吞吐量(三)
  • 高级 HarmonyOS主题课—— 帮助快速构建各种文本识别应用的课后习题
  • windows C#-异常和异常处理概述
  • 每日一题——第一百二十四题
  • 在 CentOS 7 上设置 OpenResty 开机启动
  • 势不可挡 创新引领 | 生信科技SOLIDWORKS 2025新品发布会·苏州站精彩回顾
  • 数仓之全量表、增量表、快照表、切片表、拉链表的基本概念
  • 【富集分析GSEA】如何理解富集分析以及应用
  • 一七五、HTML 不同类型的事件及其说明和示例
  • 数量少的连锁店要不要用智能巡检?
  • 【CSS】外边距塌陷
  • WPF MVVM入门系列教程(二、依赖属性)