使用Java编辑excel文件时出错(ConcurrentModificationException)



我试图修改excel工作簿中任何单元格中与另一个值匹配的行的最后一个单元格。

在第一次迭代中,它运行良好,但在第二次循环中,我在for (Cell cell : row) {行中得到了java.util.ConcurrentModificationException错误。

Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1486)
at java.base/java.util.TreeMap$ValueIterator.next(TreeMap.java:1531)
at Package.Fotos.initial(Fotos.java:266)
at Package.Fotos.main(Fotos.java:360)

有人知道我做错了什么吗?这是我基于这个答案使用的代码。

...
for (int i = 0; i < cuentafilas; i++) {
List<WebElement> columnas = filas.get(i).findElements(By.tagName("img"));
int cuentacolumnas = columnas.size();

for (int k = 0; k < cuentacolumnas; k++) {
String c = columnas.get(k).getAttribute("src");

if (c.contains("jpg")) {
String filtroValor = id;

Workbook libro = WorkbookFactory.create(new FileInputStream("D:\archivos\entrada.xlsx"));
DataFormatter formatter = new DataFormatter();
Sheet hoja = libro.getSheetAt(0);

for (Row row : hoja) {
for (Cell cell : row) {
CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex());

String text = formatter.formatCellValue(cell);

if (filtroValor.equals(text)) {
Row fila = hoja.getRow(row.getRowNum());
int ultimaCelda = fila.getLastCellNum();
Cell celda = fila.createCell(ultimaCelda);
celda.setCellValue(c);
OutputStream os = new FileOutputStream("D:\archivos\entrada.xlsx");
libro.write(os);
}
}
}
}
}
}
...

谢谢。

错误在于

Cell celda = fila.createCell(ultimaCelda);

在行中创建新单元格的位置。在遍历所有单元格的列表时,不能添加单元格。尝试创建要编辑和迭代的列表的副本而不是那个,所以另一个变成可编辑的

出现CCD_ 3,在编辑列表时,当前正在对其进行迭代。

相关内容

  • 没有找到相关文章

最新更新