使用XSSF POI removeRow(row)API不会清除单元格注释(如果存在)

时间:2014-12-18 20:42:47

标签: java excel apache-poi

我正在使用Apache POI XSSF API从Excel工作表中删除一行或多行。 以下是在单个活动中删除多行的代码。

for (int i = startRowIndexToDel; i <= endRowIndexToDel; i++) {              
            XSSFRow row = sheet.getRow(i);
            if (row != null) {
                sheet.removeRow(row);

            }               
}
if (endRowIndexToDel < lastRowIndex) {
            sheet.shiftRows(endRowIndexToDel + 1, lastRowIndex,
                    startRowIndexToDel - (endRowIndexToDel + 1));
}

当我需要删除的行没有单元格注释时,上面的代码可以正常工作。 当他们有单元格注释时,注释会留在后面并分配给移动到已删除行的位置的行,这不是我想要的。

当我需要只删除一行并且恰好是最后一行时,情况也是如此。 在这种情况下,我的代码不会移动行,因为它是最后一行。

我知道使用removeRow()不会删除&#39;行,就像我们右键单击excel行并选择delete一样,而当我们在excel中选择一行并单击删除键盘按钮时,就会清除数据行。我也注意到后一个动作也没有清除单元格注释。

我想知道是否有其他人注意到这个问题以及你对此有何修复。我可以解析我要删除的行中的所有单元格,如果它们存在则删除单元格注释,但我不想这样做。

0 个答案:

没有答案