Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ApachePOI可以有效地删除多个列_Java_Excel_Apache Poi - Fatal编程技术网

Java ApachePOI可以有效地删除多个列

Java ApachePOI可以有效地删除多个列,java,excel,apache-poi,Java,Excel,Apache Poi,我有一个程序,可以更改给定目录中的多个excel文件。 我需要从excel文件中删除多个列。例如,我想删除第5列之后的所有列 private void deleteColumns(Sheet sheet, int columnIndex) { for (Row row : sheet) { int j = 0; for (Cell cell : row) { if (j >= columnIndex) {

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

我看到一篇关于如何删除单元格的帖子。

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

其他解决方案是什么

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


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

不要直接更新行,而是使用下面的迭代器

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

这个问题可能会有帮助:我不需要删除前K列,其中K是
columnIndex
。链接问题仍然存在apply@RC. 是的,谢谢,我明白了。我会想。看这个……我接受这个答案,因为没有其他解决方案。但我仍然对使它比为每行逐个删除单元格更有效感兴趣。此答案中的代码尝试删除工作簿第一页中的所有行。这与问题有什么关系?嗨,阿克塞尔。这个答案解决了问题中提到的“ConcurrentModificationException”问题。。