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

模板支持功能点

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

模板示例

操作

pom引入

java 复制代码
  <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>${easyexcel.version}</version>
        </dependency>

版本

java 复制代码
  <easyexcel.version>3.3.4</easyexcel.version>

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

简单封装easyexcel方法

java 复制代码
public class EasyExportUtil {




    /**
     * 指定流输出
     * @param fileName
     * @param response
     * @param sheetName
     * @param templateFileName
     * @param list
     * @param <T>
     */
    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();
        }


    }





}

自定义拦截器

java 复制代码
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 我这里就写死了,大家根据自己的情况进行更改。

接口示例

java 复制代码
    @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示例填充

相关推荐
Miao1213111 分钟前
微服务 API 测试实践:海外某民宿平台如何构建模式驱动测试基础设施
java·开发语言
CRMEB系统商城1 小时前
开源自建还是SaaS订阅?算一笔3年经济账
java·大数据·开发语言·开源
keyipatience2 小时前
线程栈与TLS和线程互斥
java·linux·服务器·开发语言·ubuntu
weixin_408099673 小时前
2026 图片去水印 API 接口完全指南:一键去除图片水印(附 Python/Java/PHP/C# 示例)
java·python·php·图片处理·api调用·图片去水印·石榴智能
钱六两3 小时前
#3、SpringAI 接入deepSeek大模型(喂饭版)
java·spring boot·ai编程
Suhan424 小时前
IDEA 设置启动参数和环境变量
spring boot·spring·编辑器·idea
null_174 小时前
IntelliJ IDEA 极致流畅配置方案:Ultra 9 285K + 64GB 内存实测
java·ide·intellij-idea
Herbert_hwt5 小时前
建立Java程序开发
java·开发语言
好好沉淀5 小时前
@ExcelIgnoreUnannotated 和 @AutoMapper 详解
java
愚公移码5 小时前
蓝凌EKP18产品:流程虚拟机(PVM)
java·开发语言·前端