java-excel-utils是JAVA操作 Excel 導入導出的工具類,目的是簡化邏輯操作、可拓展 Excel 導入導出配置。

功能:
- 導入Excel文件,支持配置時間、小數點類型(支持單/多sheet)
- 瀏覽器導出Excel文件、模板文件(支持單/多sheet)
- 指定路徑生成Excel文件(支持單/多sheet)
- 樣式自定義,行、列、某個單元格(支持單/多sheet)
- 固定表頭(支持單/多sheet)
- 下拉列表值(支持單/多sheet)
- 合併單元格、列寬、標題(支持單/多sheet)
教程文檔:
https://github.com/andyczy/czy-nexus-commons-utils/blob/master/README-Andyczy.md
一、導出配置。
設置列寬舉例:
HashMap mapColumnWidth = new HashMap<>(); HashMap mapColumn = new HashMap<>(); //自定義列寬 mapColumn.put(0, 3); //第一列、寬度為3 mapColumn.put(1, 20); //有人會問寬度3是多寬?兩個中文剛剛好,設置序號的大小 mapColumn.put(2, 15); //樣式多調就好了,沒有什麼事就一下次弄好的,而且是美觀上。 mapColumnWidth.put(1, mapColumn); //第一個單元格列寬
設置表頭舉例:
HashMap setPaneMap = new HashMap(); setPaneMap.put(1, 3); //第一個表格、第三行開始固定表頭
設置數據舉例:(假設數據)
List> dataLists = new ArrayList<>(); //多表格數據
導出表格sheet名稱:
String[] sheetNameList = new String[]{"今日交易記錄","今日交易明細"}; //兩個表格、可多個
方式一:導出使用函數
ExcelUtils.exportForExcelsOptimize() 和 LocalExcelUtils.exportForExcelsOptimize()
//【推薦使用該方式】【建議大數據量下不要過多設置樣式】
ExcelUtils excelUtils = ExcelUtils.initialization();
// 必填項--導出數據(參數請看下面的格式)
excelUtils.setDataLists(dataLists);
// 必填項--sheet名稱(如果是多表格導出、sheetName也要是多個值!)
excelUtils.setSheetName(sheetNameList);
// 文件名稱(可為空,默認是:sheet 第一個名稱)
excelUtils.setFileName(excelName);
// web項目response響應輸出流:必須填 【ExcelUtils 對象】
excelUtils.setResponse(response);
// 輸出本地【LocalExcelUtils 對象】
// excelUtils.setFilePath("F://test.xlsx");
// 每個表格的大標題(可為空)
excelUtils.setLabelName(labelName);
// 自定義:固定表頭(可為空)
excelUtils.setPaneMap(setPaneMap);
// 自定義:單元格合併(可為空)
excelUtils.setRegionMap(regionMap);
// 自定義:對每個單元格自定義列寬(可為空)
excelUtils.setMapColumnWidth(mapColumnWidth);
// 自定義:某一行樣式(可為空)
excelUtils.setRowStyles(stylesRow);
// 自定義:某一列樣式(可為空)
excelUtils.setColumnStyles(columnStyles);
// 自定義:每一個單元格樣式(可為空)
excelUtils.setStyles(styles);
// 自定義:對每個單元格自定義下拉列表(可為空)
excelUtils.setDropDownMap(dropDownMap);
// 自定義:忽略邊框(可為空:默認是有邊框)
excelUtils.setNotBorderMap(notBorderMap);
// 執行導出
excelUtils.exportForExcelsOptimize();
方式三:導出函數
ExcelUtils.exportForExcelsNoStyle() 和 LocalExcelUtils.exportForExcelsNoStyle()
無樣式(行、列、單元格樣式)推薦使用這個函數、樣式設置過多會影響速度
導入使用函數:
ExcelUtils.importForExcelData(……) 和 LocalExcelUtils.importForExcelData(……)
* 獲取多單元數據 * 自定義:多單元從第幾行開始獲取數據【看本文最底下參數說明】 * 自定義:多單元根據那些列為空來忽略行數據【看本文最底下參數說明】
ExcelUtils 對象與 LocalExcelUtils 區別。
ExcelUtils: web響應有 response LocalExcelUtils:本地輸出沒 response
Test 測試【新增本地測試】
方式四:導出函數 ExcelUtils.exportForExcel(……) 過期註解
* 可提供模板下載 * 自定義下拉列表:對每個單元格自定義下拉列表 * 自定義列寬:對每個單元格自定義列寬 * 自定義樣式:對每個單元格自定義樣式 * 自定義樣式:單元格自定義某一列或者某一行樣式 * 自定義單元格合併:對每個單元格合併 * 自定義:每個表格的大標題 * 自定義:對每個單元格固定表頭
二、導入配置。
有的人會問了,為什麼這個導入沒有轉換成對象呢?我是覺得不好用,因為導入導出都是公用的,而且都是多表格,也沒必要轉換也有空拿到值。
9、導入配置:(第幾行開始獲取數據) 參數 indexMap
參數說明:多單元從第幾行開始獲取數據,默認從第二行開始獲取(可為空) HashMap hashMapIndex = new HashMap(); hashMapIndex.put(1,3); // 第一個表格從第三行開始獲取
10、導入配置:(列為空來忽略行數據) 參數 continueRowMap
參數說明:多單元根據那些列為空來忽略行數據(可為空)
HashMap mapContinueRow = new HashMap();
mapContinueRow.put(1,new Integer[]{1, 3}); // 第一個表格第1、3列為空就忽略這行數據
11、導入時間格式(默認:yyyy-MM-dd)、導入數字保留的小數點(默認:#.###### 六位)
ExcelUtils excelUtils = ExcelUtils.initialization();
excelUtils.setNumeralFormat("#.####"); // (可為空)期望保留小數的位數(#.####)這樣保留四位。
// (可為空) (poi 只接受無中文的日期格式、如果你想轉換別的格式,這個參數要和導入表中日期格式類似,如表格中為:2019年02月14日 12時12分)。
excelUtils.setDateFormatStr("yyyy年MM月dd日 HH時mm分");
excelUtils.setExpectDateFormatStr("yyyy-MM-dd HH-mm"); // (可為空、默認的值是:dateFormatStr 參數值) 期望轉換後的日期格式。
// 執行導入函數 ExcelUtils.importForExcelData()
導入獲取數據:(支持多表格數據)
for(........){ // 偽代碼
String accountNo = hashMapList.get(j).get("0"); // 獲取到Excel表格中第一列數據
// 多表格數據、想怎麼處理怎麼處理,這就是不想轉成對象的原因
}
POM Maven 引入依賴:(推薦使用最新版本)
com.github.andyczy
java-excel-utils
4.0
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/222949.html
微信掃一掃
支付寶掃一掃