0

我正在尝试从我的 excel 文件中删除重复的行。我有以下代码行。在我运行代码后,它会创建 modified_excel.xls。但是,打开此文件“不支持的文件格式”时出现错误

Workbook sourceDocument = Workbook.getWorkbook(new File("C:\\source.xls"));
WritableWorkbook writableTempSource = Workbook.createWorkbook(new File("C:\\excel\\modified_excel.xls"), sourceDocument);
WritableSheet sourceSheet = writableTempSource.getSheet(0);
String previousContent = "";
for (int i = 7; i < sourceSheet.getRows(); i++) {
     String currentContent = sourceSheet.getCell(0, i).getContents();
     if(!currentContent.equals(previousContent)){
         sourceSheet.removeRow(i);
     }
     previousContent = currentContent;
}
writableTempSource.close();
sourceDocument.close();
4

1 回答 1

2

我认为有两件事可以帮助解决这种情况

1)

writableTempSource.write();

这应该在收盘前到来writableTempSource。如果您要注释掉 for 块,您会看到您仍然有一个由“不受支持的格式”创建的文件。这条线将解决这个问题。

2)

我相信您可能i对 for 循环中的变量有疑问。考虑一下。您正在检查sourceSheet.getRows()每次迭代。但是,如果要删除行,则每次删除时此值都会更改。结果是您可能会跳过不需要的行。Java 自然地在 for 循环中提供了这个ConcurrentModificationException,但是在 API-Land 的神奇王国中,看起来你并没有受到保护,不会做这种事情。

于 2012-09-17T16:13:46.517 回答