我正在尝试从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王国中,您似乎没有受到保护,不能做这种事情。