使用Apache POI在Excel中删除多行

时间:2015-04-01 14:12:41

标签: java excel apache-poi

我有一张包含75行表格的Excel表格。 在第76行,我有每列=SUM(A1:A75)=SUM(B1:B75)的总函数 在第77行到第92行中,我有一个Excel图表,其中A1:A75和B1:B75表示值 Picture of Data and Total and Chart

如果我使用Apache POI填充所有75行,那么一切看起来都很棒。 (我正在使用XSSFWorkbook)

如果我使用Apache POI只填充30行,那么我想删除31到75行。这是我遇到问题的地方。

如果我在Excel中删除这些行,则总功能更新,Excel图表更新为使用A1:A30和B1:B30,Excel图表向上移动到第31行。

我想使用Apache POI镜像这种行为

这就是我试过的

xlsTable.shiftRows(75,91,-45)

(第75行到第91行是Excel第76行到第92行的Apache Row等值,包括Total函数和图表)

我也试过

for (int i = 75; i > 30; i--) {
    Row r = CellUtil.getRow(i, xlsTable);
    xlsTable.removeRow(r);
}

for (int i = 30; i < 75; i) {
    Row r = CellUtil.getRow(i, xlsTable);
    xlsTable.removeRow(r);
}

这些只会导致我的工作表因#REF错误而变得混乱。我想我可能无法使用POI,并且我需要实际构建我的整个工作表以获得必要数量的行,然后添加图表。不过我以为我会问!

1 个答案:

答案 0 :(得分:0)

到目前为止,我找到的最佳解决方案是简单地隐藏行。通过这种方式,大部分问题都得到了解决。

  1. Excel图表向上移动
  2. Excel图表事实上仅使用未隐藏的行(它忽略隐藏的行,因此这些隐藏的行不会创建大量的空白空间&#34;图表)
  3. 总功能工作
  4. 更准确地说,还可以为列指定命名范围,然后将图表设置为使用这些命名范围,然后使用代码更新命名范围。但是仍然需要隐藏行。