我有一个程序可以更改给定目录中的多个excel文件。 我需要从excel文件中删除多个列。例如,我想在第5个之后删除所有列。
private void deleteColumns(Sheet sheet, int columnIndex) {
for (Row row : sheet) {
int j = 0;
for (Cell cell : row) {
if (j >= columnIndex) {
row.removeCell(cell);
}
j++;
}
}
}
我得到 ConcurrentModificationException 。
我看到了一篇关于如何删除单元格的帖子。 Apache POI xls column Remove
这个想法对我来说很清楚。我需要创建一行,在那里克隆必要的单元格,然后删除该行。
还有什么其他解决方案?
我还尝试创建一个替换行,克隆我需要的单元格,然后删除原始行。我从这里接受了这个想法。
我希望看到一些更好的解决方案,使用更少的代码或更有效,然后逐个删除单元格。
答案 0 :(得分:3)
不是直接更新Row,而是使用Iterator,如下所示
Sheet sheet = wb.getSheetAt(0);
Iterator<Row> rowIte = sheet.iterator();
while(rowIte.hasNext()){
rowIte.next();
rowIte.remove();
}