「starter推薦」簡單高效Excel 導出工具

EasyExcel

EasyExcel是一個基於Java的簡單、省內存的讀寫Excel的開源項目。在儘量節約內存的狀況下支持讀寫百M的Excel。
64M內存1分鐘內讀取75M(46W行25列)的Excel,固然還有急速模式能更快,可是內存佔用會在100M多一點java

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註解便可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;
}

導出多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();
}

其餘用法

項目推薦: Spring Cloud 、Spring Security OAuth2的RBAC權限管理系統 歡迎關注github

相關文章
相關標籤/搜索