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

我正在使用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()不会“删除”行,就像当我们右键单击一个excel行并selectdelete时所发生的情况,而是在我们在excel中select一行时清除数据行,点击删除键盘button。 我也注意到后者的行动也没有明确细胞评论。

我想知道是否有其他人注意到这个问题,你的解决scheme是什么。 我可以parsing所有要删除的行中的所有单元格,如果它们存在,则删除单元格注释,但是我不想这样做。