我需要從通過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 –