我正在尝试从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();
答案 0 :(得分:2)
我认为有两件事可以帮助解决这个问题
1)
writableTempSource.write();
这应该在关闭writableTempSource
之前。如果您要注释掉for块,您会看到仍然创建了一个“不支持的格式”的文件。这一行将解决这个问题。
2)
我相信你可能在for循环中遇到i
变量的问题。考虑一下。您正在检查每次迭代sourceSheet.getRows()
。但是,如果要删除行,则每次删除时此值都会更改。结果是您可能正在跳过不需要的行。 Java自然地为ConcurrentModificationException
的for循环提供了这个,但是在神奇的API-Land王国中,看起来你不会受到保护而不会做这种事情。