2015-11-02 70 views
0

我試圖從java應用程序中自動使用libre辦公室郵件合併功能。LibreOffice郵件與Java合併

我試圖安裝libreoffice sdk但沒有成功,因爲它們需要的軟件不再可用(例如zip工具)。無論如何,我能從maven倉庫獲取jar文件(jurtl-3.2.1.jar,ridl-3.2.1.jar,unoil-3.2.1.jar和juh-3.2.1.jar)。

有了這個jar文件我是能夠重現了大量的實例,這裏提供http://api.libreoffice.org/examples/examples.html#Java_examples

還列出了一個名爲「郵件合併」服務的LibreOffice的API文檔(見這裏http://api.libreoffice.org/docs/idl/ref/servicecom_1_1sun_1_1star_1_1text_1_1MailMerge.html

但在沒有任何jar的這個服務類可用的情況下,唯一可用的實例是MailMergeType。

我可以在我的javacode中打開* .odt模板文件,下一步是創建郵件合併服務的實例並將* .csv數據源文件傳遞給郵件合併服務。

在API文檔中列出了一些可以幫助我的功能,但正如我之前所說的,我無法訪問此服務類,因爲它不在所提供的jar文件中。

有誰知道我可以如何訪問libreoffice的郵件合併服務?

如果您需要更多關於我的環境的信息,請詢問。

誠懇

回答

1

看着this code from 2004,顯然你可以簡單地使用Java的Object類。以下是該代碼的幾個片段:

Object mmservice = null; 
try { 
    // Create an instance of the MailMerge service 
    mmservice = mxMCF.createInstanceWithContext(
     "com.sun.star.text.MailMerge", mxComponentContext); 
} 
// Get the XPropertySet interface of the mmservice object 
XPropertySet oObjProps = (XPropertySet) 
    UnoRuntime.queryInterface(XPropertySet.class, mmservice); 
try { 
    // Set up the properties for the MailMerge command 
    oObjProps.setPropertyValue("DataSourceName", mDataSourceName); 
} 
// Get XJob interface from MailMerge service and call execute on it 
XJob job = (XJob) UnoRuntime.queryInterface(XJob.class, mmservice); 
try { 
    job.execute(new NamedValue[0]); 
} 

另請參閱How to do a simple mail merge in OpenOffice

關於舊的拉鍊工具的來源,請嘗試從http://www.willus.com/archive/zip64/zip.exe

+0

你好吉姆,你是完全正確的,我在思考這個應該如何工作時錯了一個彎。另外,在執行「DocumentURL」,「DataSourceName」,「CommandType」,「Command」,「OutputType」,「OutputURL」和「FileNamePrefix」作業之前,我已經設置了這些屬性。謝謝 –