2010-08-05 110 views
1

我試圖做一個簡單的Java程序來打開一個現有的word文檔,改變一些東西並保存爲.html文件。用JACOB保存Word文檔(Java)

不工作的部分是將其保存爲.html。 問題是,我得到了html文件,但它只是一個重命名的doc文件。所以不是一個我可以使用的.html文件。

這是我發現的與谷歌:

Object oWordBasic = Dispatch.call(oWord, "WordBasic").getDispatch(); 
Dispatch.call((Dispatch) oWordBasic, "FileSaveAs", path); 

我所要做的,得到一個HTML文件作爲輸出?

預先感謝您。

+3

請求幫助時永不說「不工作」。詳細描述你嘗試過哪些步驟,你希望從他們那裏得到什麼樣的輸出以及你得到了什麼樣的輸出。現在不可能知道你的問題是一個空的HTML文件,還有未捕獲到的運行時異常,錯誤編碼的文件,HTML實體沒有被轉義的文件等等,所有這些都需要不同的分辨率。 – 2010-08-05 11:16:33

+0

謝謝,我現在添加了一些細節。 – Tronje182 2010-08-05 11:21:53

回答

3

它使用OLE自動化對象來保存文件,因此您必須找到指示文件類型的方法或參數。

這是宏我可以記錄使用Word:

ActiveDocument.SaveAs filename:="asdd.htm", FileFormat:=wdFormatHTML, _ 
    LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ 
    :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ 
    SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ 
    False 

因此,這意味着你必須指出的FileFormat:= wdFormatHTML(或定值)參數SaveAs方法。這是作爲一個練習留給讀者:)

+0

PS:你總是可以嘗試在Word中錄製一個宏,查看生成的代碼,並學習如何做一些事情VIA VBA。接下來,您可以將該VBA代碼翻譯爲您的真實代碼(VBScript,或者您的案例中的Dispatch.call)。 – helios 2010-08-05 11:27:59

+0

謝謝,我找到了答案。 在提出問題之前,我已經用單詞的宏函數嘗試過它,但它沒有讓我進一步;) – Tronje182 2010-08-05 13:26:39

+0

大多數情況下,用戶更改的值會成爲方法的參數。所以在這種情況下,您必須選擇文件類型來編寫有效的HTML。並且它成爲了該方法的一個參數:)我發現將VBA集成到其他應用程序中非常有趣且功能強大,享受。 – helios 2010-08-11 06:58:47

3

我想通了,感謝helios的提示。

正確的代碼:

Object oWordBasic = Dispatch.call(oWord, "WordBasic").getDispatch(); 
Dispatch.call((Dispatch) oWordBasic, "FileSaveAs", path, new Variant(8)); 

所述變體的參數是輸出格式。 (例如,8是html,6是rtf,17是pdf) 您可以在以下位置找到完整列表:WdSaveFormat Enumeration

+0

太好了,因爲helios的回答對於解決您的問題最有幫助,您可以點擊旁邊的空白複選標記來接受它。 – 2010-08-05 13:39:30

+1

您可以在Java程序中聲明相同的常量以保持8的含義清晰。而且必須是一種方法來做一個命名參數調用,我的意思是,做'方法param1 = value1,param5 = value5'的東西:)。感謝您的支票! – helios 2010-08-06 06:40:24