EasyExcel是一個基於Java的簡單、省內存的讀寫Excel的開源項目。在儘量節約內存的狀況下支持讀寫百M的Excel。
64M內存1分鐘內讀取75M(46W行25列)的Excel,固然還有急速模式能更快,可是內存佔用會在100M多一點java
easyexcel
,已上傳至 maven 倉庫<dependency> <groupId>com.pig4cloud.excel</groupId> <artifactId>excel-spring-boot-starter</artifactId> <version>0.0.2</version> </dependency>
只須要在 Controller
層返回 List 並增長 @ResponseExcel
註解便可git
@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; }
@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; }
@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(); }
項目推薦: Spring Cloud 、Spring Security OAuth2的RBAC權限管理系統 歡迎關注github