4行Java代碼導出百萬行Excel?

假如我們有一個這樣一個list:

List studentList 

Student類的字段簡述如下:

class Student {String name, String idcard, int sex, ...}

如何快速的導出為Excel呢?

我們只想提供必要的信息:表名,表格的列名,要導出的Student字段名字:

String sheetName = "測試";
String[] columnNames = {"姓名", "身份證號", "性別", ...};
String[] classFieldNames = {"name", "idcard", "sex", ...};

我只想提供這三樣信息,並不想做多餘的編碼工作,可以嗎?

當然可以,我們可以引入一個Excel工具【
github.com/gaoice/easyexcel】來做這個事情:

XSSFWorkbook workbook = ExcelBuilder.createWorkbook(
 new SheetInfo(sheetName, columnNames, classFieldNames, studentList));

加上上面的定義,共4行代碼,就可以導出一個如下形式的Excel。

4行Java代碼導出百萬行Excel?

這時候我們注意到性別列顯示的是數字,明顯不太合適,這時候怎麼辦呢?再加一箇中文字段嗎?並不用,我們有兩種很簡單的方式解決這個問題。

方法一:使用一個Map,做鍵值對映射。

SheetInfo sheetInfo = new SheetInfo(sheetName, columnNames, fieldNames, studentList);
Map sexMap = new HashMap<>();
sexMap.put(1, "男生");
sexMap.put(0, "女生");
sheetInfo.putConverter("sex", sexMap);

方法二:我們只需為這個字段編寫一個Lambda表達式,就可以解決這個問題了。

sheetInfo.putConverter("sex", (sheetInfo1, o, listIndex, columnIndex) -> o.equals(1) ? "男生" : "女生");

方法一適合數據簡單的映射,方法二可以用來對值進行任意操作。

現在得到表格

4行Java代碼導出百萬行Excel?

easyexcel使用了SXSSFWorkbook,支持導出大批量數據。

更多使用方法見github的說明,感謝閱讀。


分享到:


相關文章: