在做一个 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 表
SXSSFWorkbook workbook = new SXSSFWorkbook();
//设置表格名称
SXSSFSheet sheet = workbook.createSheet("销售榜单");
//设置表格默认宽度30
sheet.setDefaultColumnWidth(30);
//设置 sheet 表格的第0行
SXSSFRow row = 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 表输出到输出流
OutputStream out = response.getOutputStream();
workbook.write(out);

样例代码

//1、通过 SXSSFWorkbook 设置 Excel 表
//2、设置响应头
//3、输出流输出
@RequestMapping(value = "/down", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)
public void downXlsx(HttpServletResponse response) {
    //设置表名
    String fileName = "销售榜单.xlsx";
    SXSSFWorkbook




    
 workbook = new SXSSFWorkbook();
    //设置表格名称
    SXSSFSheet sheet = workbook.createSheet("销售榜单");
    //设置表格默认宽度30
    sheet.setDefaultColumnWidth(30);
    //设置 sheet 表格的第0行
    SXSSFRow row = sheet.createRow(0);
    //设置 sheet 表格的第0行第0列的值
    row.createCell(0).setCellValue("商品名称");
    //设置 sheet 表格的第0行第1列的值
    row.createCell(1).setCellValue("数量");
    OutputStream out = 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 (Exception e) {
        e.printStackTrace();
    } finally {
        workbook.dispose();
        try {
            if (out != null)
                out.close();
        } catch (IOException e) {
            e.printStackTrace();
                SpringBoot如何用easyPOI导出excel文件
            
在工作中,经常需要我们用Java代码导出一些数据,保存在Excel中。这是非常实用的Excel导出功能,如果我们用SpringBoot结合EasyPOI框架,可以非常方便地实现这个功能。
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。 他能让你在不用考虑性能、内存的等因素的情况下,快速完成Excel的读、写等功能。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。 easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,
Java:SpringBoot使用EasyExcel实现Excel文件的导出下载和上传导入功能
Java:SpringBoot使用EasyExcel实现Excel文件的导出下载和上传导入功能
有关后端使用Springboot导出Excel,前端使用vue实现Excel下载的功能实现
有关后端使用Springboot导出Excel,前端使用vue实现Excel下载的功能实现
自定义SpringBoot项目的启动Banner
``Banner``是``SpringBoot``框架一个特色的部分,其设计的目的无非就是一个框架的标识,其中包含了版本号、框架名称等内容,既然``SpringBoot``为我们提供了这个模块,它肯定也是可以更换的这也是``Spring``开源框架的设计理念。
【SpringBoot】37、SpringBoot整合EasyPoi自定义字典导出Excel(下)
前面我们介绍了 SpringBoot 中使用 JeecgBoot 的 Autopoi 导出 Excel,其实 Autopoi 的底层也是 EasyPoi,对于 Excel 的导入/导出也是非常方便的。