简单高效 Excel 导出工具

2年前 (2022) 程序员胖胖胖虎阿
212 0 0

点击上方 Java后端选择 设为星标

优质文章,及时送达


EasyExcel

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。64M内存1分钟内读取75M(46W行25列)的Excel,当然还有急速模式能更快,但是内存占用会在100M多一点

简单高效 Excel 导出工具

spring boot stater依赖

  • 方便在 web 环境下使用
    easyexcel
    ,已上传至 maven 仓库
<dependency>
<groupId>com.pig4cloud.excel</groupId>
<artifactId>excel-spring-boot-starter</artifactId>
<version>0.0.2</version>
</dependency>

使用方法

只需要在 Controller 层返回 List 并增加 @ResponseExcel注解即可

@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ResponseExcel {
String name() default "";
ExcelTypeEnum suffix() default ExcelTypeEnum.XLSX;
String password() default "";
String[] sheet() default {};
boolean inMemory() default false;
String template() default "";
String[] include() default {};
String[] exclude() default {};
Class<? extends WriteHandler>[] writeHandler() default {};
Class<? extends Converter>[] converter() default {};
}

基础用法

  • 返回单
    sheet
    , 全部字段导出
@ResponseExcel(name = "lengleng", sheet = "demoList")
@GetMapping("/e1")
public List<DemoData> e1() {
List<DemoData> dataList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
DemoData data = new DemoData();
data.setUsername("tr1" + i);
data.setPassword("tr2" + i);
dataList.add(data);
}
return dataList;
}
// 实体对象

@Data
public class DemoData {
private String username;
private String password;
}
简单高效 Excel 导出工具
  • 自定义字段属性
@Data
public class DemoData {
@ColumnWidth(50) // 定义宽度
@ExcelProperty("用户名") // 定义列名称
@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
private String username;
@ExcelProperty("密码")
private String password;
}
简单高效 Excel 导出工具
  • 忽略部分字段
@Data
public class DemoData {
@ColumnWidth(50) // 定义宽度
@ExcelProperty("用户名") // 定义列名称
@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
private String username;
@ExcelProperty("密码")
private String password;
}
简单高效 Excel 导出工具

导出多sheet

@ResponseExcel(name = "lengleng", sheet = {"第一个sheet","第二个sheet"})
@GetMapping("/e1")
public List<List<DemoData>> e1() {
List<List<DemoData>> lists = new ArrayList<>();
lists.add(list());
lists.add(list());
return lists;
}
简单高效 Excel 导出工具

设置导出加密码

@ResponseExcel(name = "lengleng", sheet = "sheetName",password = "lengleng")
@GetMapping("/e1")
public List<List<DemoData>> e1() {
List<List<DemoData>> lists = new ArrayList<>();
lists.add(list());
lists.add(list());
return lists;
}

简单高效 Excel 导出工具

高级用法模板导出

@ResponseExcel(name = "模板测试excel", sheet = "sheetName",template = "example.xlsx")
@GetMapping("/e1")
public List<DemoData> e1() {
return list();
}

其他用法

  • 理论上支持 alibaba/easyexcel v2.1.6 版本的大部分配置

  • 支持 alibaba/easyexcel 原生的配置注解

  • github stater 地址,可fork 魔改

作者:冷冷gg
链接:https://juejin.im/post/5e83f12ce51d4546c82d8b0f


-END-
如果看到这里,说明你喜欢这篇文章,请转发、点赞
。同时标星(置顶)本公众号可以第一时间接受到博文推送。

1. 使用IntelliJ IDEA看源码?
2. Spring为啥默认把bean设计成单例的?
3. 简洁RESTful API设计规范!!
4. 两小时入门 Docker(好文推荐)

简单高效 Excel 导出工具

本文分享自微信公众号 - Java后端(web_resource)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月28日 上午5:08。
转载请注明:简单高效 Excel 导出工具 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...