Удаление строк из файла Excel с помощью API JExcel - PullRequest
0 голосов
/ 17 марта 2012

Я пытаюсь удалить повторяющиеся строки из моего файла Excel. У меня есть следующая строка кода. После того, как я запустил код, он создаетified_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 Ответ

2 голосов
/ 17 сентября 2012

Я думаю, что есть две вещи, которые могут помочь в этой ситуации

1)

writableTempSource.write();

Это должно произойти как раз перед закрытием writableTempSource. Если бы вы закомментировали блок for, вы бы увидели, что у вас все еще есть файл, созданный в «неподдерживаемом формате». Эта строка исправит это.

2)

Я полагаю, что у вас могут возникнуть проблемы с переменной i в цикле for. Учти это. Вы проверяете sourceSheet.getRows() на каждой итерации. Однако, если строки удаляются, то это значение изменяется каждый раз, когда происходит удаление. В результате вы можете пропустить строки, которые не являются необходимыми. Java, естественно, обеспечивает это для циклов с ConcurrentModificationException, однако в волшебном королевстве API-Land кажется, что вы не защищены от подобных действий.

...