我试图通过'transactionBatch'参数'分组'我的交易。我看到我的HashMap成功收集了独特的批次。当我调试下面的代码时,一切似乎都正确完成。虽然当我检查excel文件时,事务没有相应地分组。它们应该分组:
batch # 1:
- transaction with batch # 1
- transaction with batch # 1
batch # 2:
- transaction with batch # 2
- transaction with batch # 2
结果excel文件包含:
batch # 1:
- transaction with batch # 1
- transaction with batch # 2
batch # 2:
- transaction with batch # 4
- transaction with batch # 1
这是代码:
HashMap<String, String> hashMap = new HashMap<>();
for (int i = 0; i < nodeList.getLength(); i++) {
hashMap.put(((Element) (nodeList.item(i))).getElementsByTagName("transactionBatch").item(0)
.getFirstChild().getNodeValue(), ((Element) (nodeList.item(i))).getElementsByTagName("transactionBatchDate").item(0)
.getFirstChild().getNodeValue());
}
for (Map.Entry<String, String> entry : hashMap.entrySet()) {
for (int i = 0; i < nodeList.getLength(); i++) {
String transactionBatch = ((Element) (nodeList.item(i))).getElementsByTagName("transactionBatch").item(0)
.getFirstChild().getNodeValue();
String key = entry.getKey();
if (transactionBatch.equals(key)) {
HSSFRow dynamicRow = spreadSheet.createRow(i + 2);
if (nodeList.getLength() != 0) {
cell = dynamicRow.createCell((short) 0);
cell.setCellValue(((Element) (nodeList.item(i))).getElementsByTagName("transactionNumber").item(0)
.getFirstChild().getNodeValue());
cell.setCellStyle(styleWithDataCentered);
...
cell = dynamicRow.createCell((short) 8);
cell.setCellValue(((Element) (nodeList.item(i))).getElementsByTagName("transactionBatch").item(0)
.getFirstChild().getNodeValue());
cell.setCellStyle(styleWithDataCentered);
}
}
}
}
答案 0 :(得分:0)
问题在于这一行:
HSSFRow dynamicRow = spreadSheet.createRow(i + 2);
我必须在for方法之外分配另一个变量来保持int:
int rowNumber = 2;
然后只需增加每行的值。
HSSFRow dynamicRow = spreadSheet.createRow(rowNumber += 1);