MyExcel 是一個集導入、導出、加密 Excel 等多項功能的 Java 工具包。
導入:提供簡便的API,讀取Excel內容,並轉化為List< Bean >。
導出:可快速導出海量數據的簡單列表,可生成高複雜度布局的Excel,複雜布局指的是包含多種不規則合併單元格、背景色、字體大小、斜體等。
優點:
可生成任意複雜表格:本工具使用迭代單元格方式進行excel繪製,可生成任意複雜度excel,自適應寬度、高度;
零學習成本:使用html作為模板,學習成本幾乎為零;
支持常用背景色、邊框、字體等樣式設置:具體參見文檔-Style-support(樣式支持)部分;
支持.XLS、.XLSX:支持生成.xls、.xlsx後綴的excel;
支持公式導出:支持Excel模板中設置公式,降低服務端的計算量;
支持低內存SXSSF模式:支持低內存的SXSSF模式,可利用極低的內存生成.xlsx;
支持生產者消費者模式導出:支持生產者消費者模式導出,無需一次性獲取所有數據,分批獲取數據配合SXSSF模式實現真正意義上海量數據導出;
支持多種模板引擎:已內置Freemarker、Groovy、Beetl等常用模板引擎Excel構建器(詳情參見文檔Getting started),推薦使用Beetl模板引擎(Beetl文檔);
提供默認Excel構建器,直接輸出簡單Excel:無需編寫任何html,已內置默認模板,可直接根據POJO數據列表輸出;
支持一次生成多sheet:以table作為sheet單元,支持一份excel文檔中多sheet導出;
本次更新如下:
新增SaxExcelReader,支持sax方式讀取,避免OOM;
優化讀取轉換方式,性能提升;
DefaultExcelReader新增beanFilter方法,支持bean過濾;
增加Bean反射緩存;
升級jsoup為1.12.1,模板方式導出性能提升,內存佔用降低;
// 方式一:全部讀取后處理 Listresult = SaxExcelReader.of(ArtCrowd.class) .sheet(0) // 如果為0,可省略該操作 .rowFilter(row -> row.getRowNum() > 0) // 如無需過濾,可省略該操作,0代表第一行 .read(path.toFile()); // 方式二:讀取一行處理一行,可自行決定終止條件 SaxExcelReader.of(ArtCrowd.class) .sheet(0) // 如果為0,可省略該操作 .rowFilter(row -> row.getRowNum() > 0) // 如無需過濾,可省略該操作,0代表第一行 .readThen(path.toFile() ,artCrowd -> System.out.println(artCrowd.getName)); 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; }
[admin
]