java - 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) {
                row.removeCell(cell);
            }
            j++;
        }
    }
}

我得到ConcurrentModificationException

我看到一篇关于如何删除单元格的帖子。 Apache POI xls column Remove

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

还有哪些解决方案?

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

Apache POI xls column Remove

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

最佳答案

不要像下面那样直接使用 Iterator 来更新 Row

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

关于java - Apache POI 有效删除多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45010707/

相关文章:

excel - 对大数使用 DEC2BIN()

excel - 从工作表名称和单元格地址中获取值

java - 从 Apache 的 POI 工作簿获取 InputStream

java - 如何将 <junit> 任务的工作目录设置为 basedir 以外的目录?

java - Android 音频标准化或调平

java - 将十六进制字符串转换为二进制字符串

java - netbeans 找不到 java.lang 没有 jdk9

excel - VBA:创建 Outlook 全天事件约会

Java Apache POI 读取 Word (.doc) 文件并获取使用的命名样式

java - 将 XWPFRun 拆分为多个运行