Java中怎么將Excel讀取成List對象數組,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
導入POM包
<!--POI 包-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.versin}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.versin}</version>
</dependency>
可以使用WorkbookFactory
自動根據Excel類型是XLSX還是XLS自動創建對應的Workbook
File file = new File(filePath + File.separator + fileName);
FileInputStream inputStream = new FileInputStream(file);
// 使用工廠模式 根據文件擴展名 創建對應的Workbook
Workbook workbook = WorkbookFactory.create(inputStream);
根據 sheet 頁的名字獲取 sheet 頁數據
Sheet sheet = workbook.getSheet(sheetName);
Sheet 類提供了獲取首行行號和最后一行行號的方法,可以根據這兩個方法獲取 sheet 頁中的數據行數。
int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
如果只需要返回Map數據,到這里就可以返回結果
for (int i = 1; i < rowCount + 1; i++) {
Row row = sheet.getRow(i);
resultMap = new HashMap<>();
for (int j = 0; j < row.getLastCellNum(); j++) {
if(Objects.equals(row.getCell(j).getCellType(), CellType.STRING)) {
resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getStringCellValue());
} else if(Objects.equals(row.getCell(j).getCellType(), CellType.NUMERIC)) {
resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getNumericCellValue());
}else {
resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j));
}
}
jsonObject = new JSONObject(resultMap);
resultMapList.add(jsonObject.toJSONString());
}
使用 fasterxml.jackson
將Map結果數據轉成 List 對象
return JsonUtil.ofList(resultMapList.toString(), tClass);
/**
* 獲取Excel,將數據轉換成 List<T> 的形式
* Excel 數據要求第一行為對象的屬性名稱
*
* @param filePath 文件路徑
* @param fileName 文件名稱
* @param sheetName sheet名稱
* @param tClass 要轉換成的實體類
* @param <T>
* @return List對象數組
* @throws IOException
*/
public static <T> List<T> readExcelOfList(String filePath, String fileName, String sheetName, Class<T> tClass) throws IOException {
List<String> resultMapList = new ArrayList<>();
File file = new File(filePath + File.separator + fileName);
FileInputStream inputStream = new FileInputStream(file);
// 使用工廠模式 根據文件擴展名 創建對應的Workbook
Workbook workbook = WorkbookFactory.create(inputStream);
Sheet sheet = workbook.getSheet(sheetName);
int rowCount = sheet.getLastRowNum() - sheet.getFirstRowNum();
JSONObject jsonObject;
Map<String, Object> resultMap;
for (int i = 1; i < rowCount + 1; i++) {
Row row = sheet.getRow(i);
resultMap = new HashMap<>();
for (int j = 0; j < row.getLastCellNum(); j++) {
if(Objects.equals(row.getCell(j).getCellType(), CellType.STRING)) {
resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getStringCellValue());
} else if(Objects.equals(row.getCell(j).getCellType(), CellType.NUMERIC)) {
resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j).getNumericCellValue());
}else {
resultMap.put(sheet.getRow(0).getCell(j).toString(), row.getCell(j));
}
}
jsonObject = new JSONObject(resultMap);
resultMapList.add(jsonObject.toJSONString());
}
return JsonUtil.ofList(resultMapList.toString(), tClass);
}
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。