作者:冷冷gg 鏈接:https://juejin.im/post/5e83f12ce51d4546c82d8b0f
EasyExcel
EasyExcel是一個基於Java的簡單、省內存的讀寫Excel的開源項目。在儘可能節約內存的情況下支持讀寫百M的Excel。 64M內存1分鐘內讀取75M(46W行25列)的Excel,當然還有急速模式能更快,但是內存佔用會在100M多一點
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>
- 自定義字段屬性
<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>
- 忽略部分字段
<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>
導出多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>
設置導出加密碼
<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>
高級用法模板導出
<code>@ResponseExcel(name = "模板測試excel", sheet = "sheetName",template = "example.xlsx")
@GetMapping("/e1")
public List<demodata> e1() {
return list();
}/<demodata>/<code>
感悟
從正式成為一名程序員的那天起,註定要進行沒有止境的學習,想要進階高級或者專家,就要堅持每天都高效的學習,不要給自己的懶惰找藉口,“什麼我也想學習可是又沒有資源”,這次我給你整理好了,我看你還有啥理由!私信或者回復【666】就給你
閱讀更多 程序員內點事 的文章