真沒想到!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 表格會變得如此簡單優雅


分享到:


相關文章: