有一个HashMap:
HashMap<String, Object> matrix = new HashMap<String, Object>();
考虑到 Object 是一个带有数据的 ArrayList:
for (int i = 0; i < matrix.keySet().size() * 2; i += 2) {
keyRow.createCell(i).setCellValue(matrix.keySet().toArray()[i / 2].toString());
for (int j = 5; j < (((ArrayList<String>) matrix.get(matrix.keySet().toArray()[i / 2].toString())).size() + 5); j++) {
valueRow = worksheet.createRow((short) j);
valueRow.createCell(i).setCellValue(((ArrayList<String>) matrix.get(matrix.keySet().toArray()[i / 2].toString())).toArray()[j - 5].toString());
}
}
如您所见,外部循环用 HashMap 的 keySet() 的字符串填充 keyRow,同时在其间留下一个空单元格(它增加 2)。内部循环应该用每个对应的值填充每个键下的单元格(这是一个具有更多值的 ArrayList,这就是为什么是另一个循环)。除了 APACHE POI worksheet.createRow() 方法覆盖了以前的结果之外,它工作得很好,只给出了正确填充一个键的最终结果。
您对我如何解决问题有任何想法吗?我非常感谢你。