使用JExcel API从excel文件中删除行

时间:2012-03-17 17:08:23

标签: java jxl jexcelapi

我正在尝试从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();

1 个答案:

答案 0 :(得分:2)

我认为有两件事可以帮助解决这个问题

1)

writableTempSource.write();

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

2)

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