2012-03-17 42 views
0

我想從我的excel文件中刪除重複的行。我有以下代碼行。 運行代碼後,它會創建modified_excel.xls。不過,我打開此文件「不支持的文件格式」使用JExcel API從excel文件中刪除行

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

你爲什麼不使用['apache.poi'(http://poi.apache.org/download.html)的Java API與Excel等辦公文檔的工具來工作? – Lion 2012-03-17 17:31:34

回答

2

時得到一個錯誤有兩件事情,我認爲這可以幫助這種情況

1)

writableTempSource.write(); 

這應該是之前關閉writableTempSource。如果您要將for塊註釋掉,則會看到您仍然有一個由「不支持的格式」創建的文件。這條線將解決這個問題。

2)

我相信你可能有問題,與在該i變量循環。考慮這一點。您在每次迭代時檢查sourceSheet.getRows()。但是,如果行被刪除,則每次刪除時都會更改此值。結果就是你可能會跳過不需要的東西。 Java很自然地提供了ConcurrentModificationException這個循環,但是在API-Land這個神奇的王國中,看起來你沒有保護做這種事情。

+0

API-Land的神奇王國:) – Oleksii 2015-07-30 10:24:21