Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApachePOI写入xlsm(Excel2007)_Java_Excel_Apache Poi_Xlsm - Fatal编程技术网

Java 使用ApachePOI写入xlsm(Excel2007)

Java 使用ApachePOI写入xlsm(Excel2007),java,excel,apache-poi,xlsm,Java,Excel,Apache Poi,Xlsm,我已经编写了用于编写xlsm(Excel2007)的java文件 使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错 使用ApachePOI库编写xlsm文件可行吗 如果可以编写xlsm,请提供如何使用ApachePOI库编写xlsm文件的指南 XSSFWorkbook workBook = new XSSFWorkbook(); XSSFSheet sheet = workBook.createSheet("Rel

我已经编写了用于编写xlsm(Excel2007)的java文件

使用ApachePOI库,编写xlsx文件是成功的。编写xlsm文件是成功的。但我无法打开xlsm文件,因为打开xlsm文件时出错

使用ApachePOI库编写xlsm文件可行吗

如果可以编写xlsm,请提供如何使用ApachePOI库编写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();
    }

谢谢

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


您还可以通过HSSFWorkbook生成一个.xls文件(即旧格式),Excel应该可以打开.xls。此方法的唯一限制是.xls的行数限制为65k。

根据Apache POI的文档,无法创建宏:

但是,可以读取和重新写入包含宏的文件,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();
}

创建的文件不会给您错误信息

您使用的是什么版本的POI?我们使用的是POI-3.8版本。如何在xlsm的特定工作表中写入结果集。我可以获得依赖jar列表吗?