我正在以 XLSX 格式從 excel 中讀取資料,并將每張作業表的資料存盤在地圖串列中。串列中的每個專案代表作業表中每一行的列和值。但是,每個地圖的列和值的順序與原始 Excel 作業表的順序不同。我想要它從左到右的順序,所以我以后可以使用我的地圖串列寫入 excel。我能做些什么來實作它?excel表格的一個例子:
column 1 column2
value1 value2
value3 value4
順序混淆的地圖串列:
0 = "column2" -> value2
"column1" -> value1
1 = "column2" -> value4
"column1" -> value3
我的代碼片段:
public static List<Map<String, String>> readExcelSheet(Sheet sheet) {
Iterator<Row> rows = sheet.iterator();
if (!rows.hasNext()) {
return Collections.emptyList();
}
Row header = rows.next();
List<String> keys = new ArrayList<>();
for (Cell cell : header) {
String value = cell.getStringCellValue();
if (!value.isEmpty()) {
keys.add(value);
} else {
break;
}
}
List<Map<String, String>> result = new ArrayList<>();
while (rows.hasNext()) {
Row row = rows.next();
Map<String, String> rowMap = new HashMap<>();
for (int i = 0; i < keys.size(); i) {
Cell cell = row.getCell(i, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);
String value;
value = cell.toString();
rowMap.put(keys.get(i), value);
}
// Only add rows which aren't empty
if (!rowMap.values().stream().allMatch(String::isEmpty)) {
result.add(rowMap);
}
}
return result;
}
uj5u.com熱心網友回復:
不太確定您想要的輸出,以及您的意思order mixed up。這是您的預期輸出嗎?
0 = "column1" -> value1
"column2" -> value2
1 = "column1" -> value3
"column2" -> value4
如果是這樣,您可以嘗試使用LinkedHashMap或TreeMap來訂購您的地圖。
更多閱讀在這里另一個鏈接
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524480.html
標籤:爪哇擅长列表字典收藏品
