网站首页 > java教程 正文
在一些企业级的应用中,对于数据导出成Excel表格的需求是一个非常常见的需求,在SpringBoot中,我们可以借助于Apache POI库来实现这个需求,下面我们就来详细介绍一下如何在Spring Boot项目中通过Apache POI库来实现Excel的数据导出操作。
引入依赖
Apache POI是Java处理Microsoft Office文件(如Excel)的常用库。首先,需要在Spring Boot项目的pom.xml文件中添加Apache POI的依赖,如下所示。
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
创建导出Excel的工具类
接下来创建一个工具类,用于将数据写入Excel文件。我们可以在这个工具类中定义例如设置Excel表格格式、设置单元格表头等操作内容,这样可以方便我们更好的去扩展这个Excel数据导出的工具类。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.List;
public class ExcelExportUtil {
public static ByteArrayOutputStream exportToExcel(List<String[]> data, String[] headers) {
try (Workbook workbook = new XSSFWorkbook();
ByteArrayOutputStream out = new ByteArrayOutputStream()) {
// 创建工作表
Sheet sheet = workbook.createSheet("Data");
// 创建表头
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
cell.setCellStyle(createHeaderCellStyle(workbook));
}
// 填充数据
for (int i = 0; i < data.size(); i++) {
Row row = sheet.createRow(i + 1);
String[] rowData = data.get(i);
for (int j = 0; j < rowData.length; j++) {
row.createCell(j).setCellValue(rowData[j]);
}
}
// 自动调整列宽
for (int i = 0; i < headers.length; i++) {
sheet.autoSizeColumn(i);
}
workbook.write(out);
return out;
} catch (IOException e) {
throw new RuntimeException("导出Excel失败", e);
}
}
private static CellStyle createHeaderCellStyle(Workbook workbook) {
CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);
return style;
}
}
创建导出服务
定义好表格工具类之后,接下来需要再业务层中定义一个业务操作类,通过这个业务操作类将数据库中的数据导出到Excel文件操作中,如下所示,这里我们模拟了数据库读取的数据,实际的操作中,我们可以通过整合ORM框架将数据库中的数据进行组合。
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
@Service
public class ExcelExportService {
public ByteArrayOutputStream generateExcel() {
// 模拟数据
String[] headers = {"ID", "Name", "Age", "Email"};
List<String[]> data = Arrays.asList(
new String[]{"1", "Alice", "23", "alice@example.com"},
new String[]{"2", "Bob", "30", "bob@example.com"},
new String[]{"3", "Charlie", "28", "charlie@example.com"}
);
return ExcelExportUtil.exportToExcel(data, headers);
}
}
创建控制器提供Excel下载接口
完成业务层开发之后,接下来就是控制层的数据获取以及下载操作,我们可以通过HTTP请求实现Excel的文件导出下载的功能如下所示。
@RestController
@RequestMapping("/api/export")
public class ExcelExportController {
@Autowired
private ExcelExportService excelExportService;
@GetMapping("/excel")
public ResponseEntity<byte[]> exportExcel() {
ByteArrayOutputStream outputStream = excelExportService.generateExcel();
return ResponseEntity.ok()
.header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=export.xlsx")
.contentType(MediaType.APPLICATION_OCTET_STREAM)
.body(outputStream.toByteArray());
}
}
总结
这样我们就可以启动应用程序来调用这个接口,就可以实现Excel文件的导出下载工作了,当然在实际的工作中,我们可以选择的方式还有很多,当然有兴趣的读者也可以基于上面的例子实现更高级的扩展,有问题可以在评论区留言,我们一起来讨论。
- 上一篇: EasyExcel太方便易用了,强烈推荐
- 下一篇: 地图搜索的商家信息怎么批量导出到Excel表格
猜你喜欢
- 2025-01-19 地图搜索的商家信息怎么批量导出到Excel表格
- 2025-01-19 EasyExcel太方便易用了,强烈推荐
- 2025-01-19 这个工具牛了!将任何SQL数据库转换为智能电子表格
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)