Я пытаюсь создать новые файлы Excel на основе общего шаблона. Я открываю файл шаблона Excel, редактирую его и сохраняю в новом месте. Для записи файла я использую FileOutputStream и закрываю поток после записи, чтобы сохранить его. Весь процесс работает правильно, но созданный файл Excel не сохраняется должным образом. Мой файл шаблона имеет 35 КБ, и мой недавно созданный файл Excel показывает только 30 КБ. Когда я открываю только что созданный файл Excel, я вижу записанные данные, и мне нужно сохранить их и закрыть, чтобы отобразить правильный размер 36 КБ.
Новые экземпляры должны быть загружены во внешнее приложение, которое показывает «данные не найдены» при прямой загрузке 30 КБ, несохраненного Excel, тогда как сохраненный файл 36 КБ успешно загружает файл.
Я пробовал разные способы, предлагаемые в интернете, чтобы делать то же самое, и ни один из них не генерировал правильные файлы Excel. Я использую Java 1.7 и Apache-Poi версии 3.17.
Ниже приведен пример моего кода: -
public void createExcelFiles() throws ParseException, IOException {
File file = new File(ExcelTemplatePath);
FileInputStream fip = new FileInputStream(file);
FileOutputStream fos = new FileOutputStream(excelOutputFile);
XSSFWorkbook workbookOld = new XSSFWorkbook(fip);
try (SXSSFWorkbook workbook = new SXSSFWorkbook(workbookOld, rowAccessWindowSize)) {
if (makeLargeFiles) {
SXSSFSheet sheet = (SXSSFSheet) workbook.getSheetAt(0);
makeExcelFile.makeLargeFile(sheet);
workbook.write(fos);
} else {
Sheet sheet = workbookOld.getSheetAt(0);
makeExcelFile.makeNormalFile(sheet);
workbookOld.write(fos);
}
fos.close();
fip.close();
workbook.close();
}
workbookOld.close();
}