【问题标题】:Save Word Document with JACOB (Java)使用 JACOB (Java) 保存 Word 文档
【发布时间】:2010-08-05 11:09:13
【问题描述】:

我正在尝试制作一个简单的 Java 程序来打开现有的 word 文档,更改某些内容并将其保存为 .html 文件。

不起作用的部分是将其另存为 .html 。 问题是,我得到了 html 文件,但它只是一个重命名的 doc 文件。所以不是我可以使用的真正的 .html 文件。

这是我在 Google 中发现的:

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

我必须做什么,才能得到一个 html 文件作为输出?

提前谢谢你。

【问题讨论】:

  • 寻求帮助时永远不要说“它不工作”。详细描述您尝试了哪些步骤、您期望从中获得什么输出以及您得到什么输出。现在无法知道您的问题是否是空 HTML 文件、未捕获的运行时异常、编码错误的文件、未转义 HTML 实体的文件等,所有这些都需要不同的分辨率。
  • 谢谢,我现在已经添加了一些细节。

标签: java ms-word jacob


【解决方案1】:

它使用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

所以这意味着您必须向 SaveAs 方法指示 FileFormat := wdFormatHTML(或常量值)参数。这留给读者作为练习:)

【讨论】:

  • PS:您总是可以尝试在 Word 中录制宏,查看生成的代码并了解如何通过 VBA 进行操作。接下来,您可以将该 VBA 代码转换为您的真实代码(在您的情况下为 VBScript 或 Dispatch.call)。
  • 谢谢,我找到了答案。在提出问题之前,我已经尝试使用 word 的宏功能,但它并没有让我更进一步;)
  • 大多数情况下,用户更改的值会成为方法的参数。所以在这种情况下,您必须选择文件类型来编写有效的 HTML。它成为方法的一个参数 :) 我发现将 VBA 集成到其他应用程序中非常有趣和强大,享受。
【解决方案2】:

我想通了,感谢 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

【讨论】:

  • 太好了,因为 helios 的回答对解决您的问题最有帮助,您可以点击旁边的空心复选标记接受它。
  • 你可以在你的Java程序中声明相同的常量来保持8的含义清晰。并且必须是一种进行命名参数调用的方法,我的意思是,做method param1=value1,param5=value5 的事情:)。感谢您的检查!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多