Как сказано в Apache POI - FileInputStream работает, объект File завершается с ошибкой (NullPointerException) , создание XSSFWorkbook
из File
имеет тот недостаток, что все изменения, которые были внесены в эту книгу, всегдабудет храниться в этом файле, пока XSSFWorkbook.write
.Это верно, даже если write
записывает в другой файл.Но явная запись в тот же файл невозможна даже потому, что File
остается открытым после создания книги, и поэтому запись в этот же файл приводит к исключениям.
Итак, создание XSSFWorkbook
из File
использование
Workbook workbook = WorkbookFactory.create(file);
не очень хорошая идея, когда file
является *.xlsx
файлом.Вместо этого Workbook
должен быть создан с использованием FileInputstream
:
Workbook workbook = WorkbookFactory.create(new FileInputStream(file));
Несмотря на то, что связанный Q / A SO относится к 2017 году, такая же проблема всегда и сегодня не возникает при использовании apache poi 4.1.0
.