Я хотел бы знать, есть ли у кого-нибудь советы по работе с поврежденными файлами с Apache POI
Я пытаюсь открыть файл и получаю это сообщение:
Exception in thread "main" org.apache.poi.hssf.record.RecordInputStream$LeftoverDataException: Initialisation of record 0x1C left 2 bytes remaining still to be read.
at org.apache.poi.hssf.record.RecordInputStream.hasNextRecord(RecordInputStream.java:156)
at org.apache.poi.hssf.record.RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.java:231)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:480)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:301)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:95)
at ExcelImporter.EditFileImportDialog.main(EditFileImportDialog.java:409)
Вот SSCCE
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class EditFileImportDialog {
/* Omitted irrelevent code */
public static void main(String[] args) {
File file = new File("Z:\\Path\\To\\File_causing_the_trouble.xls");
try {
Workbook wb = WorkbookFactory.create(file); // Line 409 for ref to the exception stack trace
System.out.println(wb);
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Это происходит только с этим файлом, и исключение не возникает, если я открываю файл в excel и сохраняю его, а затем пытаюсь открыть его с помощью POI
. Любое предложение относительно того, как я мог бы справиться с этим?
EDIT:
В качестве примечания моя проблема может быть связана с этим вопросом, но обновление POI
не исправило мою проблему, и есть разнородности с описанным файлом. Я искал для подобных ответов, но, возможно, если кто-то знает, что не так с самим файлом excel, я могу написать что-то, чтобы исправить файл.
РЕДАКТИРОВАТЬ 2
Создание файла не входит в мой контроль. Excel исправляет сам файл только после его открытия и повторного сохранения. Мой вопрос заключается в том, может ли кто-нибудь подумать о том, как настроить/увеличить POI для обработки этого поврежденного файла таким же образом, чтобы excel смог исправить эту проблему.
РЕДАКТИРОВАТЬ 3
В ответ на несколько комментариев/ответов:
Моя конечная цель состояла бы в том, чтобы не использовать excel вообще.
- Файл отправлен.
- Программа запускается.
- Обрабатывает ошибку.
- обрабатывает данные.