当读取excel表并存储在地图列表中时,列的顺序是混合的



我正在以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;
}

非常不确定您想要的输出,以及order mixed up是什么意思。这是你的预期产出吗?

0 = "column1" -> value1
"column2" -> value2
1 = "column1" -> value3
"column2" -> value4

如果是这样,您可以尝试使用LinkedHashMap或TreeMap来排序您的地图。

更多阅读此处另一个链接

最新更新