有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaApachePOI可以有效地删除多个列

我有一个程序,可以更改给定目录中的多个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

这个想法我很清楚。我需要创建一行,克隆必要的单元格,然后删除该行

其他解决方案是什么

我还尝试创建一个替代行,克隆我需要的单元格,然后删除原始行。我从这里接受了这个想法

Apache POI xls column Remove

我希望看到一些更好的解决方案,代码更少或更有效,然后逐个删除单元格


共 (1) 个答案

  1. # 1 楼答案

    使用迭代器代替直接更新行,如下所示

    Sheet sheet = wb.getSheetAt(0);
    Iterator<Row> rowIte =  sheet.iterator();
    while(rowIte.hasNext()){
      rowIte.next();              
      rowIte.remove();
     }