首页 文章

使用apache poi写入xlsm(Excel 2007)

提问于
浏览
6

我编写了用于编写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();
    }

谢谢

2 回答

  • 2

    XLSM是带有宏的Excel电子表格,如果您的工作表中不需要宏,您也可以简单地使用.xlsx作为扩展 .

    您也可以通过HSSFWorkbook生成.xls文件(即旧格式),Excel应该可以打开.xls就好了 . 这种方法的唯一限制是.xls的行数限制为65k .

  • 12

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

    创建的文件不会给您带来错误 .

相关问题