如何将数据从arrayList写入多个Excel工作表

时间:2017-02-25 09:29:36

标签: java apache-poi

我有数据存储在ArrayList中,我想在excel工作簿中以多个工作表编写该数据。 我能够在excel工作簿中写入数据,但是它在同一张表中写入。 截至目前,我能够以下列方式写入数据,如下图所示:

enter image description here

但我想将数据分成多张, 数据应该从标题i,e S.NO,Col1 ... Col6中断,当出现这种情况时,数据应写入新表。

我正在使用此代码将数据写入excel

for (int i = 0; i < listOfResults.size(); i++) {
            row = sheet.createRow(i);
            for (int j = 0; j < 7; j++) {
                cell = row.createCell(j);
                if (j + add < listOfResults.size()) {
                    cell.setCellValue(listOfResults.get(j + add));

                }
            }

            add += 7;
        }

请帮助..

2 个答案:

答案 0 :(得分:1)

这不是一个POI问题,而是一个中断逻辑问题。

您的代码

quint16(0)

这里没有任何东西可以检测标题行,因此您不会创建新工作表。您需要检测中断,然后创建一个新工作表,并将每个标题的行索引重置为零。

修改后的代码

for (int i = 0; i < listOfResults.size(); i++) {
    row = sheet.createRow(i);
    for (int j = 0; j < 7; j++) {
        cell = row.createCell(j);
        if (j + add < listOfResults.size()) {
            cell.setCellValue(listOfResults.get(j + add));
        }
    }
    add += 7;
}

另一个问题是你在主循环中运行的次数太多了。你正在为每个单元循环一次,但你真的想要每行循环一次。这就是在第一个循环中将列表长度(单元格数)除以7(每行单元格数)的原因。

答案 1 :(得分:0)

您可以检查当前元素是否像S.NO. 如果是,则必须打开新表并继续写。