使用POI删除Sheet页时,不能使用下面的代码循环删除。因为执行一遍后第二个sheet页的下标变成了0,但是i变成了1,所以循环里面应该放workbook.removeSheetAt(0);
for (int i=0;i<workbook.getNumberOfSheets();i++){
workbook.removeSheetAt(i);
}
而且当sheet页总数大于1时,上面的循环会留下最后一个sheet页,比如现在Excel中存在1和2两个sheet页。这时候执行上面的循环会剩下第二个sheet页,下标为0.所以如果要彻底删除,就得在执行一遍workbook.removeSheetAt(0);比如下面:
//清空Excel
for (int i=0;i<workbook.getNumberOfSheets();i++){
workbook.removeSheetAt(0);
}
int num=workbook.getNumberOfSheets();
if (num>0){
workbook.removeSheetAt(0);
}

本文介绍了使用Apache POI批量删除Excel文件中的Sheet页时常见的问题及解决方案。指出直接循环删除会导致索引错位,留下最后一个Sheet页未被删除的问题,并提供了一种正确的方法来确保所有Sheet页都能被彻底删除。
1680

被折叠的 条评论
为什么被折叠?



