【開源軟件工具推薦】MyExcel一個高性能的Excel處理工具包

MyExcel,是一個集導入、導出、加密Excel等多項功能的Java工具包。

MyExcel採用聲明式語法來構建、讀取Excel,屏蔽POI的具體操作細節(對POI無感知),以開發常用的技術替代,使得構建(從簡單到高度複雜Excel)以及讀取Excel變得極爲便利,且構建、讀取性能極爲優異,佔用內存極低。

特點

  • 可生成任意複雜表格:本工具使用迭代單元格方式進行Excel繪製,可生成任意複雜度Excel,提供多種寬度策略;

  • 零學習成本:使用Html作爲模板,學習成本幾乎爲零,無需關心POI本身任何操作;

  • 支持常用背景色、邊框、字體等樣式設置:具體參見菜單樣式支持部分;

  • 支持.xls、.xlsx、.csv:支持生成.xls、.xlsx後綴的Excel以及.csv文件;

  • 支持公式導出:支持Excel模板中設置公式,降低服務端的計算量;

  • 支持低內存SXSSF模式:支持低內存的SXSSF模式,可利用極低的內存生成.xlsx;

  • 支持生產者消費者模式導出:支持生產者消費者模式導出,無需一次性獲取所有數據,分批獲取數據配合SXSSF模式實現真正意義上海量數據導出;

  • 支持多種模板引擎:已內置Freemarker、Groovy、Beetl、Thymeleaf等常用模板引擎Excel構建器;

  • 提供默認Excel構建器,直接輸出簡單Excel:無需編寫任何Html,已內置默認模板,可直接根據POJO數據列表輸出;

  • 支持一次生成多sheet:以table作爲sheet單元,支持一份Excel文檔中多sheet導出;

  • 支持Excel容量設定:支持設定Excel容量,到達容量後自動新建Excel,可構建成zip壓縮包導出;


導入示例

// (推薦)方式一:全部讀取後處理,SAX模式,避免OOM,建議大量數據使用List<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class)        .sheet(0) // 0代表第一個,如果爲0,可省略該操作        .rowFilter(row -> row.getRowNum() > 0) // 如無需過濾,可省略該操作,0代表第一行        .beanFilter(ArtCrowd::isDance) // bean過濾        .read(path.toFile());// 可接收inputStream
// (推薦)方式二:讀取一行處理一行,可自行決定終止條件,SAX模式,避免OOM,建議大量數據使用// readThen有兩種重寫接口,返回Boolean型接口允許在返回False情況下直接終止讀取SaxExcelReader.of(ArtCrowd.class) .sheet(0) // 0代表第一個,如果爲0,可省略該操作 .rowFilter(row -> row.getRowNum() > 0) // 如無需過濾,可省略該操作,0代表第一行 .beanFilter(ArtCrowd::isDance) // bean過濾 .readThen(path.toFile() ,artCrowd -> {System.out.println(artCrowd.getName);});// 可接收inputStream
public class ArtCrowd { // index代表列索引,從0開始 @ExcelColumn(index = 0) private String name;
@ExcelColumn(index = 1) private String age;
@ExcelColumn(index = 2,dateFormatPattern="yyyy-MM-dd") private Date birthday;}

導出示例

List<ArtCrowd> dataList = this.getDataList();    Workbook workbook = DefaultExcelBuilder.of(ArtCrowd.class)            .build(dataList);    AttachmentExportUtil.export(workbook, "藝術生信息", response);    // 加密導出    // AttachmentExportUtil.encryptExport(workbook, "藝術生信息", response,"123456");}


並且與阿里easyexcel庫對比,同文件測試內存佔用約爲對方的三分之一。目前這個開源庫已經在項目中廣泛使用。

本文分享自微信公衆號 - 自增程序員(javaipp)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。

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