2017-07-10 51 views
0

我有一个计划,改变定目录多个Excel文件。 我需要从excel文件中删除多个列。例如,我想在5日后删除所有列。的Apache POI删除多个列有效

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

我想看到一些更好的解决方案,用更少的代码或更有效然后除去细胞一个接一个。

+2

这个问题可能会帮助:https://stackoverflow.com/questions/1180110/apache-poi-xls-column-remove –

+0

我不需要删除K为“columnIndex”的前K列。 –

+0

链接的问题仍然适用 –

回答

3

,而不是更新行直接使用iterator像下面

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

我接受此答案,因为没有其他解决方案。但我仍然有兴趣使它更有效,然后为每一行删除单元格。 –

+0

此答案中的代码尝试删除工作簿第一个工作表中的所有行。这与这个问题有什么关系? –

+0

嗨Axel..This答案解决了问题中提到的'ConcurrentModificationException'问题.. –