EasyExcel
EasyExcel是一個基于Java的簡單、省記憶體的讀寫Excel的開源專案,在盡可能節約記憶體的情況下支持讀寫百M的Excel,
64M記憶體1分鐘內讀取75M(46W行25列)的Excel,當然還有急速模式能更快,但是記憶體占用會在100M多一點

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 = https://www.cnblogs.com/leng-leng/p/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;
}

- 自定義欄位屬性
@Data
public class DemoData {
@ColumnWidth(50) // 定義寬度
@ExcelProperty("用戶名") // 定義列名稱
@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
private String username;
@ExcelProperty("密碼")
private String password;
}

- 忽略部分欄位
@Data
public class DemoData {
@ColumnWidth(50) // 定義寬度
@ExcelProperty("用戶名") // 定義列名稱
@ContentStyle(fillPatternType = FillPatternType.SOLID_FOREGROUND, fillForegroundColor = 40)
private String username;
@ExcelProperty("密碼")
private String password;
}

匯出多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;
}

設定匯出加密碼
@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;
}

高級用法模板匯出
@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 魔改
專案推薦: Spring Cloud 、Spring Security OAuth2的RBAC權限管理系統 歡迎關注
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/168983.html
標籤:Java
