真没想到!Java 导出 Excel 表格会变得如此简单优雅

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

EasyExcel

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

真没想到!Java 导出 Excel 表格会变得如此简单优雅

spring boot stater依赖

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

使用方法

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

<code>@Documented
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface ResponseExcel {
\tString name() default "";
\tExcelTypeEnum suffix() default ExcelTypeEnum.XLSX;
\tString password() default "";
\tString[] sheet() default {};
\tboolean inMemory() default false;
\tString template() default "";
\tString[] include() default {};
\tString[] exclude() default {};
\tClass extends WriteHandler>[] writeHandler() default {};
\tClass extends Converter>[] converter() default {};
}/<code>

基础用法

  • 返回单 sheet, 全部字段导出
<code>@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 {
\tprivate String username;
\tprivate String password;
}/<demodata>/<demodata>/<code>
真没想到!Java 导出 Excel 表格会变得如此简单优雅

  • 自定义字段属性
<code>@Data
public class DemoData {
@ColumnWidth(50) // 定义宽度
\t@ExcelProperty("用户名") // 定义列名称
@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
\tprivate String username;
\t@ExcelProperty("密码")
\tprivate String password;
}/<code>
真没想到!Java 导出 Excel 表格会变得如此简单优雅

  • 忽略部分字段
<code>@Data
public class DemoData {
@ColumnWidth(50) // 定义宽度
\t@ExcelProperty("用户名") // 定义列名称
@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
\tprivate String username;
\t@ExcelProperty("密码")
\tprivate String password;
/<code>
真没想到!Java 导出 Excel 表格会变得如此简单优雅

导出多sheet

<code>@ResponseExcel(name = "lengleng", sheet = {"第一个sheet","第二个sheet"})
@GetMapping("/e1")
public List<list>> e1() {

List<list>> lists = new ArrayList<>();
lists.add(list());
lists.add(list());
return lists;
}/<list>/<list>/<code>
真没想到!Java 导出 Excel 表格会变得如此简单优雅

设置导出加密码

<code>\t@ResponseExcel(name = "lengleng", sheet = "sheetName",password = "lengleng")
\t@GetMapping("/e1")
\tpublic List<list>> e1() {
\t\tList<list>> lists = new ArrayList<>();
\t\tlists.add(list());
\t\tlists.add(list());
\t\treturn lists;
\t}/<list>/<list>/<code>
真没想到!Java 导出 Excel 表格会变得如此简单优雅

高级用法模板导出

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


感悟

从正式成为一名程序员的那天起,注定要进行没有止境的学习,想要进阶高级或者专家,就要坚持每天都高效的学习,不要给自己的懒惰找借口,“什么我也想学习可是又没有资源”,这次我给你整理好了,我看你还有啥理由!私信或者回复【666】就给你

真没想到!Java 导出 Excel 表格会变得如此简单优雅


分享到:


相關文章: