如何从Java中的Apache POI库调用macros?
我有 :
名为“process”的macros为我的工作表执行所有处理工作。
我想要使用Apache POI的Java代码来调用这个macros,以便它可以为我处理表单。
如何在Java中的Apache POI中调用macros?
:: 注意 ::
我在Apache POI中使用
import org.apache.poi.ss.usermodel
。请给出示例代码。 (我是Apache POI和Java本身的新手。)
我不认为这是可能的。 POI是一个读取/编辑Office文件的库,macros是另一个完整的野兽。 您将不得不实施一个Visual Basic应用程序解释器到POI来完成这一点。 已经在Excel工作簿中的macros将被保留,但不能添加新的或调用现有的macros。
您可以使用其他工具,如com4j 。 我在今天创造了一个POC,像一个魅力。 只需按照以下步骤操作
- 在这里下载最新版本
- 使用Apache Ant构build示例: samples \ excel
-
使用由tlbimp生成的代码(它只是com4j的一部分),创build一个小应用程序并编写如下代码:
// Starts excel and open an existing workbook _Application app = ClassFactory.createApplication(); app.setVisible(0, true); _Workbook wb = app.getWorkbooks().open("c:\\test.xlsx", null, null, null, null, null, null, null, null, null, null, null, null, null, null, 0); // run a macro Variant macro = new Variant(Variant.Type.VT_BSTR); macro.set("my_macro"); wb.getApplication().run(macro, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null); // Save the excel file and quit Variant saveBeforeExit = new Variant(Variant.Type.VT_BOOL); saveBeforeExit.set(1); wb.close(saveBeforeExit, Variant.getMissing(), Variant.getMissing(), 0); app.quit();
-
更多的例子: com4j教程
我想,你不能。
macros
macros不能被创build。 但是,读取和重写包含macros的文件将安全地保存macros。
Apache POI限制