Написать в xlsm (Excel 2007), используя apache poi
Я написал Java-файл для написания XLSM (Excel 2007).
Используя Apache POI Library, запись xlsx файла является успешной. И написание xlsm файла - это успех. Но я не могу открыть файл xlsm из-за ошибки при открытии файла xlsm.
Возможно ли написать файл xlsm, используя Apache POI Library?
Если возможно написать xlsm, пожалуйста, предоставьте руководство Как написать файл xlsm с помощью библиотеки Apache poi.
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet("Related_SRC");
String realName = "Test.xlsm";
File file = new File("C:\\sdpApp", realName);
try {
FileOutputStream fileOutput = new FileOutputStream(file);
workBook.write(fileOutput);
fileOutput.close();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
Спасибо
2 ответа
Согласно документации Apache POI создание макросов невозможно: http://poi.apache.org/spreadsheet/limitations.html
Однако можно читать и перезаписывать файлы, содержащие макросы, и apache poi безопасно сохранит макросы.
Вот пример:
String fileName = "C:\\new_file.xlsm";
try {
Workbook workbook;
workbook = new XSSFWorkbook(
OPCPackage.open("resources/template_with_macro.xlsm")
);
//DO STUF WITH WORKBOOK
FileOutputStream out = new FileOutputStream(new File(fileName));
workbook.write(out);
out.close();
System.out.println("xlsm created successfully..");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (InvalidFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Созданный файл не выдаст вам ошибки.
XLSM - это электронная таблица Excel с макросами, если вам не нужны макросы на листе, вы можете просто использовать.xlsx в качестве расширения.
Вы также можете создать файл.xls (т. Е. Более старый формат) через HSSFWorkbook, Excel сможет нормально открывать.xls. Единственным ограничением этого подхода является то, что.xls ограничено числом строк до 65k.