最近我打开了这个话题:
Java - Apache POI - 使用循环填充行和单元格时遇到问题(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
这是新代码:
Row keyRow = worksheet.createRow(4);
Row valueRow = null;
int keyCell = -2;
int firstIndex = 0;
int secondIndex = -2;
int row = 5;
ArrayList<String> keyArray = new ArrayList();
ArrayList<String> innerValueArray;
ArrayList<ArrayList<String>> outerValueArray = new ArrayList<ArrayList<String>>();
for (Map.Entry<String, ArrayList<String>> e : matrix.entrySet()) {
keyArray.add(e.getKey());
innerValueArray = new ArrayList();
for (String s : e.getValue()) {
innerValueArray.add(s);
}
outerValueArray.add(innerValueArray);
}
for (String s : keyArray) {
keyCell += 2;
keyRow.createCell(keyCell).setCellValue(keyArray.get(firstIndex++));
}
for (ArrayList<String> aS : outerValueArray) {
secondIndex += 2;
for (String s : aS) {
if ((row - 5) < outerValueArray.size()) {
row++;
}
valueRow = worksheet.createRow(row);
valueRow.createCell(secondIndex).setCellValue(s);
}
}
在另一个主题中,有问题的变量是“keyCell”,而在这个主题中,它是 secondIndex。将值放在正确位置的唯一方法是通过用于键的相同变量,但这使得只有一列可以被填充,从而擦除其他列的内容。问题与其他主题完全相同。所有替代方案都会导致这种情况,我想要 SAME 行中的值。
问题是:用这种模式填充和Excel表格是不可能的?因为在内部循环中更新变量并保持所需的模式肯定是不可能的。如何使用循环构建这种模式?
OBS:在我的软件中它会增加 2,这没什么区别。一个人这样做会导致同样的问题(单元格被擦除)。
我非常感谢你!