EasyExcel文件导出简洁版

1. EasyExcel简介

EasyExcel是一个基于Java的简单、快速、lightweight的Excel处理库。它的主要特点包括:

  • 轻量级设计:
    EasyExcel的jar包大小仅约1MB,相比较其他Excel处理库如Apache POI来说更加轻量。
    采用内存友好的流式读写模式,无需一次性加载整个Excel文件到内存,大大减少了内存占用。
  • 高性能读写:
    通过事件驱动的读写模式,逐行处理数据,避免了对整个Excel文件的加载。
    在处理大Excel文件时,EasyExcel表现出优异的性能,远超传统的Excel操作库。
  • 使用简单:
    EasyExcel抽象了Excel操作的底层细节,提供了简单易用的API。
    开发者只需编写少量代码就可完成数据的读写操作,大幅提升了开发效率。
  • 丰富功能:
    除了基础的读写操作,EasyExcel还支持样式设置、公式计算、合并单元格等功能。
    同时还提供了Web导入导出的解决方案,简化了Web应用中的Excel交互。
  • 活跃社区:
    EasyExcel拥有良好的社区支持,有丰富的使用文档和示例代码。
    同时也有大量第三方插件和工具,为开发者提供全面的生态支持。

2. 依赖包引入

sh 复制代码
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>easyexcel</artifactId>
   <version>4.0.2</version>
</dependency>

3. 核心代码

java 复制代码
public void exportExcel(String scriptId, HttpServletResponse response) {
        try {
            List<ScenesExportDto> scenesExportDtos = ***
            response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");
            response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");

            EasyExcel.write(response.getOutputStream(), ScenesExportDto.class).sheet("场景").doWrite(scenesExportDtos);

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
}
java 复制代码
@Data
// 设置头样式
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 55)
@ColumnWidth(25)
public class ScenesExportDto {
    // 设置列长
    @ColumnWidth(15)
    @ExcelProperty("场景序号")
    private Integer sort;

    // 设置该列内容粗体
    @ContentFontStyle(bold = BooleanEnum.TRUE)
    private String name;

    @ExcelProperty("时长(秒)")
    @ColumnWidth(10)
    private Integer duration;
}

更多示例,请查看官方文档

相关推荐
君顾17 分钟前
智慧零售实战指南:从技术架构到落地方案全解析
java·开发语言·零售
zhanghe6871 小时前
es的密码带有特殊字符,导出
java
pnoker1 小时前
IoT DC3 概念解读:把设备抽象成一套语义模板——位号、指令、事件与面向智能体的设备建模
java·人工智能·物联网·iot·dc3
my_realmy1 小时前
Java SE 基础学习笔记(一):面向对象、继承多态、抽象接口与异常(JDK 8)
java·多线程·并发··生产者消费者模式
天远数科2 小时前
风险治理实战:基于天远车信盟出险构建自动化理赔核保流水线
java·网络·人工智能·自动化
骇客野人2 小时前
SpringBoot电商系统用户注册、登录、留存及数据埋点设计与落地实施方案
java·spring boot·后端
qiuhaipeng12 小时前
Claude code 升级后上下文长度变短问题
java·前端·数据库
wxwx_bscxy3223 小时前
基于Python新冠疫情可视化分析系统的设计与实现
java·数据库·spring boot·python·微信小程序·sqlite
evans在进步4 小时前
Tomcat NIO 工作原理详解:从 Acceptor、Poller 到容器处理链
java·tomcat·nio
渡我白衣5 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集