我正在尝试从Excel文件中删除重复的行。我有以下代码行。
运行代码后,它将创建Modifyed_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();

最佳答案

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

1)

writableTempSource.write();


这应该在关闭writableTempSource之前进行。如果要注释掉for块,则会看到您仍然创建了“不支持的格式”文件。此行将解决此问题。

2)

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

08-28 16:17