• easyexcel的简单使用(execl模板导出)


    模板支持功能点

    1. 支持列表
    2. 支持自定义头名称
    3. 支持自定义fileName
    4. 支持汇总

    模板示例

    在这里插入图片描述

    操作

    pom引入

      <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>easyexcel</artifactId>
                <version>${easyexcel.version}</version>
            </dependency>
    

    版本

      <easyexcel.version>3.3.4</easyexcel.version>
    

    这里尽量使用新版本,用老版本的话可能会有问题。

    简单封装easyexcel方法

    public class EasyExportUtil {
    
    
    
    
        /**
         * 指定流输出
         * @param fileName
         * @param response
         * @param sheetName
         * @param templateFileName
         * @param list
         * @param 
         */
        public static <T>  void exportWithTemplate(String fileName,HttpServletResponse response, String sheetName, String templateFileName, List<T> list) {
            try {
                response.setHeader("content-disposition", "attachment;filename="+ URLEncoder.encode(fileName, "UTF-8"));
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            try (ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileName).registerWriteHandler(new CustomTemplateSheetStrategy(0,sheetName)).build()) {
                WriteSheet writeSheet = EasyExcel.writerSheet().build();
    
                FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
                excelWriter.fill(list, fillConfig, writeSheet);
                Map<String, Object> map = new HashMap<>();
                map.put("date", "2019年10月9日13:28:28");
                map.put("total", 1000);
                excelWriter.fill(map, writeSheet);
    
            } catch (IOException e) {
                e.printStackTrace();
            }
    
    
        }
    
    
    
    
    
    }
    
    
    

    自定义拦截器

    public class CustomTemplateSheetStrategy implements SheetWriteHandler {
        private Integer sheetNo;
        private String sheetName;
        public CustomTemplateSheetStrategy(String sheetName) {
            this.sheetName = sheetName;
        }
        public CustomTemplateSheetStrategy(Integer sheetNo, String sheetName) {
            this.sheetNo = sheetNo;
            this.sheetName = sheetName;
        }
        @Override
        public void beforeSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
        }
        /**
         * 功能:动态修改模板中sheet的名称
         * sheet创建完成后调用
         * @param writeWorkbookHolder
         * @param writeSheetHolder
         */
        @Override
        public void afterSheetCreate(WriteWorkbookHolder writeWorkbookHolder, WriteSheetHolder writeSheetHolder) {
            if (sheetName == null) {
                return;
            }
            if (sheetNo == null) {
                sheetNo = 0;
            }
            writeWorkbookHolder.getCachedWorkbook().setSheetName(sheetNo, sheetName);
        }
    
    }
    
    

    date和total 我这里就写死了,大家根据自己的情况进行更改。

    接口示例

    
        @GetMapping("/export")
        public void exportDeviceList(HttpServletResponse response) {
    
            List<ExcelData3> list = new ArrayList<>();
            for (int i = 0; i <= 10; i++) {
                ExcelData3 excelData3 = new ExcelData3();
                excelData3.setA("testA");
                excelData3.setB("testB");
                excelData3.setC("testC");
                excelData3.setD("testD");
                excelData3.setE("testE");
                excelData3.setF("testF");
                excelData3.setG("testG");
                excelData3.setH("testH");
                excelData3.setI("testI");
                list.add(excelData3);
            }
            EasyExportUtil.exportWithTemplate(System.currentTimeMillis() + ".xlsx", response, "我是一个sheetName", CommonUtlis.resolvePath("test.xlsx"), list);
        }
    

    调用

    在这里插入图片描述

    导出示例

    在这里插入图片描述

    参考

    easyexcel示例填充

    源码地址

    源码示例

  • 相关阅读:
    《nginx》二、nginx反向代理
    python之函数&返回值&传参&Lambda表达式
    YoloV8改进策略:WaveletPool解决小目标的混叠问题,提高小目标的检测精度
    java面试题-集合类面试题
    Idea Git 已提交代码版本回滚
    EasyNLP 开源中文 NLP 算法框架
    Vue3——网站整体布局、用户动态页面(下)
    Hadoop笔记06-Hadoop-源码解析
    团队的Code Review实践
    网络规划与设计实验+配置案例报告+pkt
  • 原文地址:https://blog.csdn.net/qq_37716298/article/details/139660609