HashMap获取所有值,但仅返回最后一个条目

时间:2017-11-20 05:58:45

标签: java android excel apache-poi

我从hashmap获取数据。我想使用POI将它添加到excel文件中。但问题是程序只在excel中添加最后一项。但在调试时给出所有值。 这是我的代码

 for (int j = 0; j < proList.size(); j++) {
        HashMap hashMap = proList.get(j);
        Iterator<Object> iterator = hashMap.entrySet().iterator();
        while (iterator.hasNext()) {
            Map.Entry<String, String> entry = (Map.Entry<String, String>) iterator.next();
            rows=sheet1.createRow(j+1);
            cc=rows.createCell(j);
            cc.setCellValue(entry.getValue());




        }
    }

2 个答案:

答案 0 :(得分:2)

看起来你应该在外部循环中创建行。 您可能需要为列提供单独的索引。

for (int j = 0; j < proList.size(); j++) {
    HashMap hashMap = proList.get(j);
    rows=sheet1.createRow(j+1);
    Iterator<Map.Entry<String, String>> iterator = hashMap.entrySet().iterator();
    int col = 0;
    while (iterator.hasNext()) {
        Map.Entry<String, String> entry = iterator.next();       
        cc=rows.createCell(col++);
        cc.setCellValue(entry.getValue());
    }
}

答案 1 :(得分:0)

您使用j作为索引,它在while循环中永远不会递增。因此它始终只创建一行。

注意:您使用的索引'j'来自while循环之外的for循环声明。它的限制只有prolist.size()!我认为你应该在while循环中使用一个单独的索引。