Написать в 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.

Другие вопросы по тегам