У меня есть XLSX
и XLSM
файлы, которые содержат некоторые предопределенные макросы. Я пытаюсь использовать Apache POI
для редактирования этих файлов, но макросы удаляются автоматически. Когда я пытаюсь открыть файл после изменения, появляется окно с уведомлением, что файлы удалены, потому что файл поврежден:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<logFileName>error066080_01.xml</logFileName>
<summary>Error in file (C:\_privat\completeReport.xlsm)</summary>
<removedRecords>
<removedRecord>/xl/worksheets/sheet1.xml</removedRecord>
<removedRecord>/xl/calcChain.xml</removedRecord>
</removedRecords>
</recoveryLog>
Я использую следующий код для обработки fle, Vars.XLS
содержит путь к файлу XLSX/XLSM
.
File file = new File(Vars.XLS);
FileInputStream inputStream = new FileInputStream(file);
XSSFWorkbook workbook = XSSFWorkbookFactory.createWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheetAt(0);
XSSFRow row = sheet.createRow(recordcount+4);
Cell cell;
cell = row.createCell(0);
cell.setCellValue(recordcount);
inputStream.close();
FileOutputStream fileOut=new FileOutputStream(Vars.XLS);
workbook.write(fileOut);
fileOut.close();