有一个HashMap:
HashMap<String, ArrayList<String>> matrix = new HashMap<String, ArrayList<String>>();
我想以这种模式填写一个 excel 表:
hashkey1 | hashkey2 | hashkey3 | hashkey4
value1-1 | value2-1 | value3-1 | value4-1
value1-2 | value2-2 | value3-2 | value4-2
value1-3 | value2-3 | value3-3 | value4-3
value1-4 | value2-4 | value3-4 | value4-4
value1-5 | value2-5 | value3-5 | value4-5
“hashKeys”是“Categories”,每个键都有自己的 ArrayList。ArrayLists 的每个字符串元素都应在其对应的键下绘制。
这是实际的代码:
int keyCell = -2;
int row = 5;
Row keyRow = worksheet.createRow(4);
Row valueRow = null;
for (Map.Entry<String, ArrayList<String>> e : matrix.entrySet()) {
keyRow.createCell(keyCell += 2).setCellValue(e.getKey());
for (String s : e.getValue()) {
if ((row - 5) < (e.getValue().size())) {
valueRow = worksheet.createRow(row += 1);
valueRow.createCell(keyCell).setCellValue(s);
} else {
valueRow.createCell(keyCell).setCellValue(s);
}
}
}
它工作得很好,除了结果以这种模式出现:
hashkey1 | hashkey2 | hashkey3 | hashkey4
value1-1 | | |
value1-2 | | |
value1-3 | | |
value1-4 | | |
value1-5 | value2-5 | value3-5 | value4-5
我认为它完全按照我想要的方式工作,但是由于在每个循环中创建了新行,单元格在每个循环中都会被擦除。这是一个非常具有挑战性的问题。我很难做到这一点,现在我完全被困住了。没有任何效果。细胞总是被抹去。
好吧,我希望这是一个不太冗长的话题。我真的很感谢大家的帮助。