Springboot 前后端分离项目使用 POI 生成并导出 Excel

简介: Springboot 前后端分离项目使用 POI 生成并导出 Excel

在做一个 SpringBoot 前后端分离项目的时候,需要将数据存到 Excel中,用户可以下载 Excel。具体实现是采用 Apache 强大的 POI。文章最后将源码例出。image.gif

POI API 文档: https://poi.apache.org/apidocs/dev/index.html

步骤

  1. 导入 POI 的 maven 依赖
<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>5.1.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>5.1.0</version></dependency>
  1. 使用 produces 设置响应类型和编码为 “application/octet-stream”。
@RequestMapping(value="/down", produces=MediaType.APPLICATION_OCTET_STREAM_VALUE)
  1. 通过使用 SXSSFWorkbook 设置 Excel 表
SXSSFWorkbookworkbook=newSXSSFWorkbook();
//设置表格名称SXSSFSheetsheet=workbook.createSheet("销售榜单");
//设置表格默认宽度30sheet.setDefaultColumnWidth(30);
//设置 sheet 表格的第0行SXSSFRowrow=sheet.createRow(0);
//设置 sheet 表格的第0行第0列的值row.createCell(0).setCellValue("商品名称");
//设置 sheet 表格的第0行第1列的值row.createCell(1).setCellValue("数量");
  1. 设置响应头
//设置响应头response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
//filename 为 Excel 文件名称
  1. 获取 response 的输出流,通过输出流将 Excel 输出。
//将 Excel 表输出到输出流OutputStreamout=response.getOutputStream();
workbook.write(out);

样例代码

//1、通过 SXSSFWorkbook 设置 Excel 表//2、设置响应头//3、输出流输出@RequestMapping(value="/down", produces=MediaType.APPLICATION_OCTET_STREAM_VALUE)
publicvoiddownXlsx(HttpServletResponseresponse) {
//设置表名StringfileName="销售榜单.xlsx";
SXSSFWorkbookworkbook=newSXSSFWorkbook();
//设置表格名称SXSSFSheetsheet=workbook.createSheet("销售榜单");
//设置表格默认宽度30sheet.setDefaultColumnWidth(30);
//设置 sheet 表格的第0行SXSSFRowrow=sheet.createRow(0);
//设置 sheet 表格的第0行第0列的值row.createCell(0).setCellValue("商品名称");
//设置 sheet 表格的第0行第1列的值row.createCell(1).setCellValue("数量");
OutputStreamout=null;
try {
//设置响应头response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
response.setHeader("Content-disposition", "attachment;filename="+URLEncoder.encode(fileName, "UTF-8"));
//将 Excel 表输出到输出流out=response.getOutputStream();
workbook.write(out);
out.flush();
    } catch (Exceptione) {
e.printStackTrace();
    } finally {
workbook.dispose();
try {
if (out!=null)
out.close();
        } catch (IOExceptione) {
e.printStackTrace();
        }
    }
}
目录
相关文章
|
1月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
99 8
|
1月前
|
存储 easyexcel Java
SpringBoot+EasyExcel轻松实现300万数据快速导出!
本文介绍了在项目开发中使用Apache POI进行数据导入导出的常见问题及解决方案。首先比较了HSSFWorkbook、XSSFWorkbook和SXSSFWorkbook三种传统POI版本的优缺点,然后根据数据量大小推荐了合适的使用场景。接着重点介绍了如何使用EasyExcel处理超百万数据的导入导出,包括分批查询、分批写入Excel、分批插入数据库等技术细节。通过测试,300万数据的导出用时约2分15秒,导入用时约91秒,展示了高效的数据处理能力。最后总结了公司现有做法的不足,并提出了改进方向。
|
2月前
|
easyexcel Java UED
SpringBoot中大量数据导出方案:使用EasyExcel并行导出多个excel文件并压缩zip后下载
在SpringBoot环境中,为了优化大量数据的Excel导出体验,可采用异步方式处理。具体做法是将数据拆分后利用`CompletableFuture`与`ThreadPoolTaskExecutor`并行导出,并使用EasyExcel生成多个Excel文件,最终将其压缩成ZIP文件供下载。此方案提升了导出效率,改善了用户体验。代码示例展示了如何实现这一过程,包括多线程处理、模板导出及资源清理等关键步骤。
|
2月前
|
Java BI API
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
593 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
|
3月前
|
前端开发 Java easyexcel
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
SpringBoot操作Excel实现单文件上传、多文件上传、下载、读取内容等功能
50 6
|
4月前
|
JavaScript 前端开发 easyexcel
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
本文展示了基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的完整过程,包括后端使用EasyExcel生成Excel文件流,前端通过Blob对象接收并触发下载的操作步骤和代码示例。
818 0
基于SpringBoot + EasyExcel + Vue + Blob实现导出Excel文件的前后端完整过程
|
4月前
|
前端开发 easyexcel
SpringBoot+Vue3实现Excel导入
SpringBoot+Vue3实现Excel导入
136 0
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
507 0
传统maven项目和现在spring boot项目的区别
|
XML Java 数据库连接
创建springboot项目的基本流程——以宠物类别为例
创建springboot项目的基本流程——以宠物类别为例
156 0
创建springboot项目的基本流程——以宠物类别为例
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
SpringBoot 项目与被开发快速迁移|学习笔记
下一篇
DataWorks