【问题标题】:POI removeRow and shiftRows leaves blank rows at the end of sheet. How to delete them?POI removeRow 和 shiftRows 在工作表末尾留下空白行。如何删除它们?
【发布时间】:2012-07-16 06:25:57
【问题描述】:

我正在使用 POI 来操作现有的 Excel 工作表。
我想在开头删除行并在末尾添加行。当我删除行时,我会将所有行移到它们之后。

int numOfRows = sheet.getLastRowNum()+1;
int extraRows = numOfRows - maxAllowedRows;             
for(int i=1;i<=extraRows;i++){  //i intialized with 1 to ignore header row.
    sheet.removeRow(sheet.getRow(i));
}
sheet.shiftRows(extraRows+1,sheet.getLastRowNum(),-extraRows);

在程序的当前运行中,它工作正常。但是当程序再次运行时,在第一次运行中删除和移动的行数相同的空白行出现在底部的工作表中,并且我尝试在工作表底部添加的任何新行都会在这些空白之后添加行。

有没有办法避免在删除和移位操作后出现空白行(即有什么方法可以实际删除行吗?

【问题讨论】:

    标签: java apache excel apache-poi delete-row


    【解决方案1】:

    我不是 POI 方面的专家,这让我有些头疼,但我的理解是您可以在空白行上添加新行。 您需要跟踪空白行的开始位置,然后使用 HSSFSheet.addRow(index) 添加行

    【讨论】:

      【解决方案2】:

      类似问题Here

      我认为 shiftRows 方法调整了(区域?-抱歉,忘记了电子表格术语)。

      【讨论】:

      • 在发布此问题之前,我已经看到了您提供的链接。我的问题有点不同。 我需要读取一个 excel 然后向其中添加行,并且 excel 中的最大行数有限制。因此,在添加新行之前,我需要检查行数是否超过限制。如果是这种情况,我需要删除工作表顶部的行,然后在底部添加行。现在,当我这样做时,它第一次运行良好。但是在第二次运行中,与我在第一次运行中删除和移动的填充行一样多的空白行出现在工作表中。并且在这些空白行之后添加任何新添加的行
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多