假如我們有一個這樣一個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。
這時候我們注意到性別列顯示的是數字,明顯不太合適,這時候怎麼辦呢?再加一箇中文字段嗎?並不用,我們有兩種很簡單的方式解決這個問題。
方法一:使用一個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) ? "男生" : "女生");
方法一適合數據簡單的映射,方法二可以用來對值進行任意操作。
現在得到表格
easyexcel使用了SXSSFWorkbook,支持導出大批量數據。
更多使用方法見github的說明,感謝閱讀。