java EasyExcel集成及工具類使用

EasyExcel簡介

  • easyExcel是阿里巴巴開源poi插件之一,當前最新版本1.1.2-beta5,poi版本3.17,因此,集成時老版本poi需要提升poi版本,或者做版本隔離。
  • 吐槽一下這個版本沒有RELEASE版本
  • 主要解決了poi框架使用複雜,sax解析模式不容易操作,數據量大起來容易OOM,解決了POI併發造成的報錯
  • 主要解決方式:通過解壓文件的方式加載,一行一行的加載,並且拋棄樣式字體等不重要的數據,降低內存的佔用
  • 具體實現原理,建議看github上的readme

EasyExcel優勢

  • 註解式自定義操作。
  • 輸入輸出簡單,提供輸入輸出過程的接口
  • 支持一定程度的單元格合併等靈活化操作

EasyExcel劣勢

  • 框架不成熟,1.1.0版本後提供靈活接口的只剩beta版本
  • 依然存在一些bug
  • 沒有一套完整的api

ExcelUtil快速使用

  • maven引用(版本控制內若存在低版本POI,請升級版本和代碼,官方POI版本3.17):
<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>easyexcel</artifactId>
     <version>1.1.2-beta5</version>
</dependency>
  • 工具類:
    詳見底部附帶的github地址
  • 實體類繼承BaseRowModel ,對需要導出或者導入的字段增加@ExcelProperty註解,index值爲對應excel中的列,value爲表頭,format爲日期格式化
public class PersonDto extends BaseRowModel{
    /** id */
    @ExcelProperty(index = 0 , value = "id")
    private String id;
    /** 姓名 **/
    @ExcelProperty(index = 1 , value = "姓名")
    private String name;
    /** 生日 **/
    @ExcelProperty(index = 2 , value = "生日" , format = "yyyy-MM-dd")
    private String birth;
}

導出:

ExcelUtil.writeExcel(response,exportVoList,"導出文件名","sheet1", ExcelTypeEnum.XLSX , PersonDto .class);

導入:

List<FundDto> importDtoList = ExcelUtil.readExcel(excelFile,PersonDto .class);

自定義樣式註解:

  • 在對應列上增加註解,修改對應的列上的參數,例
public class PersonDto extends BaseRowModel{
    /** id */
    @ExcelProperty(index = 0 , value = "id")
    private String id;
    /** 姓名 **/
    @ExcelProperty(index = 1 , value = "姓名")
    private String name;
    /** 生日 **/
    @ExcelProperty(index = 2 , value = "生日" , format = "yyyy-MM-dd")
    @CellStyleFormat(fillBackgroundColor= IndexedColors.LIGHT_YELLOW)
    @CellFontFormat(fontColor=IndexedColors.BLACK)
    private String birth;
}

Ps.

  • 後續有新的需要,可以就自定義註解的修改增加新的功能

目前已知存在問題:

  • 自定義註解目前未經過多種場景的測試,出現問題,需要再修改
  • 導入的實體類中配置了註解的屬性爲基本類型時,可能會讀到一部分空行,這個問題目前需要EasyExcel的看看後續版本處理

EasyExcel github地址:https://github.com/alibaba/easyexcel
EasyExcelUtils github項目地址:https://github.com/wangxiaoxiongjuly/easyExcelUtils

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章