簡體   English   中英

使用apache poi寫入xlsm(Excel 2007)

[英]write to xlsm (Excel 2007) using apache poi

我編寫了用於編寫xlsm的java文件(Excel 2007)。

使用Apache POI庫,編寫xlsx文件是成功的。 編寫xlsm文件是成功的。 但是由於打開xlsm文件時出錯,我無法打開xlsm文件。

使用Apache POI Library編寫xlsm文件是否可行?

如果編寫xlsm是可行的,請提供指導如何使用Apache poi庫編寫xlsm文件。

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();
    }

謝謝

根據Apache POI的文檔,無法創建宏: http//poi.apache.org/spreadsheet/limitations.html

但是,可以讀取和重寫包含宏的文件,api 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作為擴展。

您也可以通過HSSFWorkbook生成.xls文件(即舊格式),Excel應該可以打開.xls就好了。 這種方法的唯一限制是.xls的行數限制為65k。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM