当前位置: 首页 > 知识库问答 >
问题:

使用ApachePOI写入xlsm(Excel2007)

文国发
2023-03-14

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

谢谢

共有2个答案

耿俊彦
2023-03-14

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

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

段干华晖
2023-03-14

根据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 2007)的Java文件。 使用Apache POI库,成功编写xlsx文件。并且编写xlsm文件是成功的。但是由于打开xlsm文件时出错,我无法打开xlsm文件。 使用Apache POI库编写xlsm文件是否可行? 如果编写xlsm可行,请提供指南如何使用Apache poi库编写xlsm文件。 谢谢 问题答案: 根据Apache POI的

  • wef:使用apache poi写入xlsm(Excel 2007) 当我向文件中写入一个简单的字符串时,我无法打开该文件。错误-“Excel无法打开文件“Test1.xlsm”,因为文件格式或文件扩展名无效”

  • 我使用这段代码使用ApachePOI重写xlsm文件。我必须从resultset重写Sheet1上的数据,这段代码创建模板xlsm文件的副本,并执行所有处理。 但当我打开创建的xlsm文件时,会显示以下消息: 我们发现“文件名”中的某些内容有问题。xlsm’。你想让我们尽力恢复吗?如果您信任此工作簿的来源,请单击“是”。 这是我的代码,请建议我该怎么做。

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 问题内容: 用以下格式将a写入Excel工作簿很简单: 这使: 和相应的Excel文件。 有没有还写了一个可能性成Excel文件?实际上,这与或多或少相同,但可以在文件中存储VBA宏。我需要这样做是因为我想在创建文件后插入并运行VBA宏。 但是,当在常规文件上尝试此操作时,我在弹出窗口中收到以下错误消息: 然后,我可以手动选择将文件保存为包含宏的文件。但是,我希望自动执行此操作而无需执行额外的步骤

  • 用户可以将Excel文档保存为. xls或xml-table。结果是一个具有固定结构的xml-file,Excel可以用它纠正工作。 可以用java中的ApachePOI打开这种类型的excel文件吗? 事先谢谢你,安德烈。