如何从Java代码调用Excel VBAmacros?

我需要从通过Java从数据库中获取的数据生成Excel工作表。 为此,我需要在生成Excel时调用一些VBAmacros函数。 任何人都可以帮助我如何从Java代码调用VBAmacros?

我不太了解你从数据库中的数据生成Excel工作表的整体方法。 通常情况下,我会使用Vivek提出的Apache POI。

但是,如果您确实需要在表格中调用Excelmacros,则需要两件事:

首先,您需要一个像JACOB , COM4J或类似工具的JAVA到COM桥接器。 它支持自动化接口就足够了。 它不需要有完整的COM支持。

其次,使用JAVA到COM桥梁,您应该启动Excel,加载Excel工作表,运行macros,保存并closuresExcel。 所以你必须打电话相当于:

Set Wb = Application.Workbooks.Open FileName Application.Run MacroName Wb.Save Application.Quit 

如果您不能使用JACOBCOM4J ,则可以创build一个Visual Basic脚本并从Java程序运行该脚本。

要创build脚本打开记事本,并写下这样的事情:

 Set objExcel = CreateObject("Excel.Application") Set objWorkbook = objExcel.Workbooks.Open("myExcel.xlsm") objExcel.Application.Run "myExcel.xlsm!MyMacroName" objExcel.ActiveWorkbook.Close objExcel.Application.Quit WScript.Quit 

把它保存为myVBS.vbs ,你可以从你的Java代码中这样调用它:

 cmd = "you_path\\myVBS.vbs"; Runtime.getRuntime().exec(cmd); 

我不确定是否可以直接从Java调用macros。 但是,您可以在Excel表格中填充数据,并在用户第一次打开Excel表格时调用macros。 您将能够使用Apache POI工具在包含macros的Excel工作表中填充数据 – http://poi.apache.org/spreadsheet/index.html

你也许可以在Excel中捕捉一个事件,当工作表发生变化时,你甚至可以调用任何你想要的macros,所以如果你想调用macros“蓝色”,你可以在一个隐藏的工作表中写入“蓝色” Excel将捕获更改,当捕获更改时,您可以看到写入的内容,然后执行一些ifelse语句以获得要为该实例调用的macros。 不是很好的编码,而是一个简单的解决方法。 我会自己做其他的方法。