我需要从通过Java从数据库中提取的数据生成Excel工作表。 为此,我需要在生成Excel时调用一些VBA宏函数。 任何人都可以帮助我如何从Java代码调用VBA宏?如何从Java代码调用Excel VBA宏?
回答
我不完全理解您从数据库中的数据生成Excel工作表的整体方法。通常,我会使用Vivek提出的Apache POI。
但是,如果你真的需要调用在纸张上的Excel宏,那么你需要两样东西:
首先,你需要一个Java到COM桥状JACOB,COM4J或类似的工具。如果它支持自动化接口就足够了。它不需要完全的COM支持。
其次,使用JAVA到COM桥接,您应该启动Excel,加载Excel工作表,运行宏,保存并关闭Excel。所以,你必须调用相当于:
Set Wb = Application.Workbooks.Open FileName
Application.Run MacroName
Wb.Save
Application.Quit
谢谢您的回应先生。 –
我不确定是否可以直接从Java调用宏。但是你可以在excel表格中填充数据&当用户第一次打开excel表单时调用宏。您将能够使用Apache POI工具在包含宏的Excel表格中填充数据 - http://poi.apache.org/spreadsheet/index.html
谢谢你的回应先生。其实我们有一个已经设计好的excel模板。我想用java填充该模板。在填充模板时,我们需要调用一些宏函数来处理写入的数据。我们正在使用JExcel阅读excel。但是我们不知道可以从中调用宏。那么你知道jxl可以用于这个目的吗? –
JExcel与Apache POI类似。它是一个独立于平台的库,用于在不使用Excel本身的情况下读取和写入Excel文件。你不能用它运行一个宏。但JExcel能够打开现有的Excel文件(您的模板),向其中添加数据并进行各种格式化。所以我建议你使用JExcel实现宏将做的事情。如果您需要在非Windows平台或服务器环境(例如,Web应用程序)中运行它,则无论如何您都无法运行Excel宏,因为Excel仅支持Windows且仅支持单用户环境。 – Codo
感谢Codo,我们目前正在使用JExcel,我们也认为我们应该使用它,而不是为项目引入新的API。是的,我们将执行所需的编码,因为我们仍然无法找到如何从java调用宏。所以我们只用这种方式来格式化和改变JExcel相关的东西。再一次感谢你。 –
您可能还可以当一个工作表的变化,你可以在Excel中捕捉到的事件,甚至打电话给你它想要的宏,所以如果你想打电话宏“蓝色”,你可以在一个隐藏的工作表中写入“蓝色”,然后Excel将捕获这些变化,当你捕捉到变化时,你可以看到写入的内容,并执行一些ifelse语句来获得你想要调用的宏实例。不是很好的编码,而是一个简单的解决方法。我会尽自己的其他方法。
感谢Jon的回答,我们也可以这样做。但它是一个乏味的。目前,我们在一本充满宏的工作簿中有大约10张工作表。因此插入一个新的宏并维护它是一项艰巨的工作。 –
它不会这样做,但它会工作,我会设置一个事件处理程序类,所以你不必把它放在每个工作表上。 – Jon49
宏中的事件处理程序'类'?怎么做 ?? –
如果您不能使用JACOB
或COM4J
您可以制作Visual Basic脚本并从Java程序运行脚本。
要创建脚本打开记事本,写的是这样的:
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);
- 1. 分析Excel VBA /宏代码
- 2. Excel VBA宏彩色代码
- 3. 如何从Excel中调用python代码?
- 4. 从VBA宏调用ABAP代码
- 5. 从java代码中调用VB宏
- 6. Outlook VBA调用Excel宏
- 7. VBA宏代码
- 8. Excel Vba宏代码搜索列变量
- 9. 如何从代码VBA中调用DblClick子Excel
- 10. Excel宏:总结代码到调用子()
- 11. 如何从Excel VBA宏生成XML?
- 12. 从Excel或Excel VBA中调用c#代码的最佳方法
- 13. Excel VBA - 使用添加的调用宏
- 14. Excel VBA代码
- 15. excel宏调用vba中的另一个excel宏
- 16. 如何使用以下excel vba代码?
- 17. 如何在Excel VBA宏期间打开从SAP调用的Excel电子表格
- 18. VBA excel(宏)
- 19. VBA和Excel宏
- 20. Excel宏VBA
- 21. Excel宏非VBA
- 22. VBA宏的Excel
- 23. VBA-Excel宏
- 24. Excel VBA宏xlDays
- 25. VBA Excel宏
- 26. Excel VBA Unfiltering宏
- 27. Excel宏和VBA
- 28. 从VBA脚本执行宏代码
- 29. 如何使用Excel VBA宏循环行?
- 30. 如何屏蔽Excel宏代码
相关? http://stackoverflow.com/questions/2805763/call-a-vb-macro-from-java-code –