2010-08-05 111 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