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();
        }
    }
}
目录
相关文章
|
11月前
|
Python
Excel中如何批量重命名工作表与将每个工作表导出到单独Excel文件
本文介绍了如何在Excel中使用VBA批量重命名工作表、根据单元格内容修改颜色,以及将工作表导出为独立文件的方法。同时提供了Python实现导出工作表的代码示例,适用于自动化处理Excel文档。
|
数据格式 UED
记录一次NPOI库导出Excel遇到的小问题解决方案
【11月更文挑战第16天】本文记录了使用 NPOI 库导出 Excel 过程中遇到的三个主要问题及其解决方案:单元格数据格式错误、日期格式不正确以及合并单元格边框缺失。通过自定义单元格样式、设置数据格式和手动添加边框,有效解决了这些问题,提升了导出文件的质量和用户体验。
1160 3
|
前端开发
实现Excel文件和其他文件导出为压缩包,并导入
实现Excel文件和其他文件导出为压缩包,并导入
383 1
|
JavaScript 前端开发 数据处理
Vue导出el-table表格为Excel文件的两种方式
Vue导出el-table表格为Excel文件的两种方式
1178 6
|
存储 Java API
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
Java实现导出多个excel表打包到zip文件中,供客户端另存为窗口下载
1145 4
|
Java API Apache
|
前端开发 JavaScript Java
导出excel的两个方式:前端vue+XLSX 导出excel,vue+后端POI 导出excel,并进行分析、比较
这篇文章介绍了使用前端Vue框架结合XLSX库和后端结合Apache POI库导出Excel文件的两种方法,并对比分析了它们的优缺点。
3075 0
|
Java easyexcel 应用服务中间件
【二十五】springboot使用EasyExcel和线程池实现多线程导入Excel数据
【二十五】springboot使用EasyExcel和线程池实现多线程导入Excel数据
1993 0
Springboot 获取导入的Excel文件的sheet表 列名
Springboot 获取导入的Excel文件的sheet表 列名
414 0
Springboot 获取导入的Excel文件的sheet表 列名
|
Java 关系型数据库 MySQL
java入门019~springboot批量导入excel数据到mysql
java入门019~springboot批量导入excel数据到mysql
451 0