首页 > 其他分享 >springboot的excel导出

springboot的excel导出

时间:2023-07-06 19:34:55浏览次数:43  
标签:sheet springboot excel ExcelProperty 导出 private writeSheet data 写入

这里导出excel用到的是 阿里巴巴的easyexcel

1、首先导入依赖

 <!--alibaba easyexcel-->
 <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>easyexcel</artifactId>
       <version>2.1.6</version>
</dependency>

2、对需要导出的实体类加注解

@ExcelProperty("商品编号")
private Integer id;
@ExcelProperty("商品名称")
private String name;
@ExcelProperty("商品价格")
private Float price;
@ExcelProperty("商品购买数量")
private Integer buynum;
@ExcelProperty("商品库存")
private Integer num;

3、下载接口

  • 准备一个List格式的数据。
  • 将响应数据设置为excel格式。
  • 写入数据。Easyexcle提供了API供用户使用,只需要一行代码就能够将List列表转化为Excel文件。write方法指定输出流和写入数据的class对象;sheet方法指定excel的sheet名称;doWrite则指定写入的列表数据。
@GetMapping("/download")
public void download(HttpServletResponse response) {
    try {
        // 准备数据
        List<GoodsDo> Goodslist = new ArrayList<>(10);
        for (int i = 0; i < 10; i++) {
            GoodsDo s = new GoodsDo();
            s.setId(i * 10 + 1);
            s.setName("name" + i);
            s.setBuynum(i);
            s.setNum(20+i);
            s.setPrice(2.11+i);
            Goodslist.add(s);
        }

        // 设置响应
        response.setContentType("application/vnd.excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("file", "UTF-8").replaceAll("\\+", "%20");
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");

        // 写入数据
        EasyExcel.write(response.getOutputStream(), GoodsDo.class).sheet("sheet1").doWrite(Goodslist);
    } catch (Exception e) {
        e.printStackTrace();
    }
}
可用index指定写入哪一列   2、合并列(参照商品编号和商品名)
@ExcelProperty({"主标题","商品编号"})
private Integer id;
@ExcelProperty({"主标题","商品名称"})
private String name;
@ExcelProperty("商品价格")
private Double price;
@ExcelProperty("商品购买数量")
private Integer buynum;
@ExcelProperty("商品库存")
private Integer num;

  3、格式转换  
给实体类加注解
//格式转换为xx年xx月xx时xx分xx秒
@DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")
@ExcelProperty("日期标题")
private Date date;
//给每个数字后边加%
@NumberFormat("#.##%")
@ExcelProperty(value = "数字标题")    
private Double doubleData;

 

4、重复写(写到单个或多个sheet)

1、 写到同一个sheet,只创建一次sheet

String fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
// 这里需要指定写用哪个class去写
try (ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build()) {
    // 这里注意 如果同一个sheet只要创建一次
    WriteSheet writeSheet = EasyExcel.writerSheet("模板").build();
    // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来
    for (int i = 0; i < 5; i++) {
        // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
        List<DemoData> data = data();
        excelWriter.write(data, writeSheet);
    }
}

2、写到不同sheet,把创建sheet语句放到循环里,且sheetNo要变化

fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
    // 这里指定文件
    try (ExcelWriter excelWriter = EasyExcel.write(fileName, DemoData.class).build()) {
        // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面
        for (int i = 0; i < 5; i++) {
            // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样
            WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).build();
            // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
            List<DemoData> data = data();
            excelWriter.write(data, writeSheet);
        }
    }

3、写到不同sheet,但是是不同对象。

fileName = TestFileUtil.getPath() + "repeatedWrite" + System.currentTimeMillis() + ".xlsx";
    // 这里 指定文件
    try (ExcelWriter excelWriter = EasyExcel.write(fileName).build()) {
        // 去调用写入,这里我调用了五次,实际使用时根据数据库分页的总的页数来。这里最终会写到5个sheet里面
        for (int i = 0; i < 5; i++) {
            // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class可以每次都变
            // 实际上可以一直变
            WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).head(DemoData.class).build();
            // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
            List<DemoData> data = data();
            excelWriter.write(data, writeSheet);
        }
    }

 

标签:sheet,springboot,excel,ExcelProperty,导出,private,writeSheet,data,写入
From: https://www.cnblogs.com/nliu/p/17533140.html

相关文章

  • easyExcel 动态列以及自适应列宽的实现
    easyExcel动态列以及自适应列宽的实现在使用EasyExcel实现动态表头和数据以及自适应列宽时,可以按照以下步骤进行操作:1.动态表头和数据:EasyExcel提供了@ExcelProperty注解来指定对象属性与Excel列之间的映射关系。我们可以通过定义一个包含所有可能出现的列名作为键和对......
  • 有哪些相见恨晚的办公(word/Excel)神器?
    相见恨晚的办公神器之前有分享过一些办公的插件如不坑盒子,打工人插件,易用宝等,下面就简单的介绍一下上面的几个神器后再补充一些其它办公神器吧不坑盒子(word/wps)这是一个非常好用的插件工具,专门应用在Word文档和wps,支持Office2010以上的版本,操作也简单且实用。前面几篇文章......
  • IDEA中SpringBoot项目 注解报错
    WSG报错:应通过@SpringBootApplication指定特性 IDEA中@EnableAutoConfiguration注解报错Attributesshouldbespecifedvia@SpringBootApplication多次用Maven清理重新导包后还是不可以但是项目可以正常启动起来这种是IDEA级别的检查错误 需要在IDEA中Settings中设......
  • 第九篇 - SpringBoot统一结果封装Json数据
    前面几节学习了SpringBoot和Vue的结合,以及Vue跳转到另一个Vue页面。这节学习SpringBootcontroller返回Json数据格式封装。参考链接:https://zhuanlan.zhihu.com/p/347233348第一步:在entity文件夹下新建一个ResultVo类。 ResultVo.javapackagecom.example.demo.entity;p......
  • vue+element ui 表格选中特定行导出为excel
    1:使用场景:当选中表格中某几条数据(图中演示的为两行选中一行)进行导出为excel(如图二)2:安装依赖:npminstall--savexlsxfile-savernpminstall-Dscript-loader3:引入依赖文件:在src文件夹中创建名为excel的文件夹(注意大小写)将Blob.js、export2Excel.js两个js文件复制到exce......
  • ERP导出表格自定义格式R报表开发
    按照正常流程新建程序,画面修改上传,程序下载修改导入JAVA包,在global.import下 IMPORTcomIMPORTJAVAjava.net.URLIMPORTJAVAorg.apache.poi.ss.util.CellRangeAddressIMPORTJAVAorg.apache.poi.ss.util.RegionUtilIMPORTJAVAjava.io.InputStreamIMPORTJAVAjava......
  • springboot starter使用
    实现自定义starterpom.xml依赖<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http:......
  • Python 使用xlsxwriter绘制Excel表格
    最近在统计资产,正好看到了xlsxwriter这个表格生成模块,借此机会,熟悉一下,写点有趣的小案例,一开始想使用C++QT图形化开发一套自动化运维平台,但后来发现不仅消耗时间而且需要解决QTQssh远程模块的一些问题,后来没有使用QT做,xlsxwriter模块来做非常的简单,所以使用它。上班不能摸鱼,我要......
  • SpringBoot笔记:SpringBoot启动参数配置
    springboot启动参数/usr/local/jdk/jdk1.8.0_261/bin/java-jar-server\ ##服务模式,linux默认是server模式,window默认是client参数-XX:+HeapDumpOnOutOfMemoryError\ ##当OOM发生时自动生成HeapDump文件-XX:HeapDumpPath=/usr/local/springboot_......
  • EasyExcel实现excel文件重复多次写入和导出&下载文件
    一、EasyExcel实现excel文件的导出官方文档导入依赖<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>......