宏命名爲「過程」,做所有的處理工作,爲我的工作表。
我想讓我的Java代碼使用Apache POI來調用這個宏,以便它可以爲我處理工作表。
如何在Java中的Apache POI中調用宏?
::注意::
我在Apache的POI使用
import org.apache.poi.ss.usermodel
。請給出示例代碼。 (我是新來的Apache POI和Java本身。)
宏命名爲「過程」,做所有的處理工作,爲我的工作表。
我想讓我的Java代碼使用Apache POI來調用這個宏,以便它可以爲我處理工作表。
如何在Java中的Apache POI中調用宏?
::注意::
我在Apache的POI使用
import org.apache.poi.ss.usermodel
。請給出示例代碼。 (我是新來的Apache POI和Java本身。)
我不認爲這是可能的。 POI是一個讀取/編輯Office文件的庫,宏是一個完整的其他野獸。您必須將Visual Basic for Applications解釋器實現爲POI才能完成此操作。已保存在Excel工作簿中的宏將保留,但不能添加新的或調用現有的宏。
我已經在我正在編輯的文件中有宏。 **我只是想用Java POI執行宏!** –
反覆陳述你的目標不會讓它神奇地發生。 – Ben
您可以使用其他工具一樣com4j。我在今天創建了一個POC,並且像魅力一樣工作。只要按照下列步驟操作:
與TLBIMP生成的代碼(這只是一個com4j的一部分),創建一個小應用程序,並寫這樣一個代碼:
// 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 tutorials
真的有幫助嗎?有沒有人證實這一點? –
我已經在我正在編輯的文件中有宏。 **我只是想用Java POI執行宏!** –
**那是不可能的** – Jacob
請注意,當前版本的POI支持常規的Excel函數。 – parasietje