0

我的 Windows 窗体应用程序使用 Novacode DocX 从模板编写文档。项目的 Novacode 部分运行完美,文件保存。问题是当我加载文档时,当 Novacode 部分添加标题等时,字段(目录)不会更新。

我可以并且确实编写了一个宏来更新 open 上的字段。这将解决问题,但不是每个使用我的应用程序的人都会有这个宏。由于各种原因,我无法将文件另存为带有宏的 .docm 文件(假设文件必须是“.docx”)。

我发现 Microsoft.office.interop.Word 程序集将允许我调用“ Fields.Update ”。我的理解是这可以解决问题,但我不能阻止没有安装 word 的用户运行我的应用程序。我的理解是,如果我“使用 Microsoft.Office.Interop.Word”,或者在我的引用中有它,如果有人没有词,应用程序将无法运行。

所以我有检查是否安装了 word 的代码。如果我运行它并安装它,我可以使用“ Late Binding ”来运行互操作代码吗?其他相关问题,有回复指向“ NetOffice ”作为运行互操作的一种方式,而无需检查是否安装了 word。

我正试图通过我的研究使这一点尽可能全面。我的问题与这个问题非常相似“ 如何轻松测试我的 C# 应用程序找不到外部程序集的情况? ”。我希望这个问题可以很快为每个人解决,但我不确定它会不会。

旁注,如果有人知道一种方法来更新以“.docx”格式保存的word文档的字段,甚至只是现有的目录,而没有安装word,这将是很棒的知道,并且会绕过我的整个问题。虽然我仍然想知道互操作问题的答案。

这也是我在 StackOverflow 上的第一个真正问题,如果您有建议的标签,请连同您的答案一起做。如果您对我提出问题的方式有反馈,我也会接受,但请不要在没有任何答案的情况下关闭/删除问题。我链接到类似的问题,但这些问题有一段时间没有得到回应。我相信我已经按照规则做了一切。

4

2 回答 2

0

这更像是对您的“如果有人知道一种方法来更新以“.docx”格式保存而没有安装 word 的 word 文档的字段,甚至是现有目录的方法”问题的答案,但您可能想要查看适用于 Office 的 Open XML SDK

这将允许您修改 .docx 文件,而无需安装 Word。

我发现本教程几乎完全符合您使用 Open XML SDK 的要求。

于 2015-07-30T19:11:45.100 回答
0

很多话要说,但我想我找到了答案

主要问题是如果我添加对“Microsoft.Office.Interop.Word”的引用并且运行应用程序的客户端没有单词,应用程序会在哪里失败?我现在的理解是,如果客户没有消息,它不会在启动时失败。但是,当到达使用“Office.Interop.Word”的代码时,它将失败。

防止这种情况的方法是一种简单的注册表检查方法。我使用了这种方法的变体来检查注册表。然后在我的任何使用“Office.Interop.Word”代码的代码运行之前,我检查客户端是否在注册表中有单词。如果他们没有消息,我会为我的申请采取适当的通知措施。作为双重安全措施,我还在“try catch”异常块中包围了“Office.Interop.Word”代码。在我的代码中,异常意味着未安装 word。可以在此处找到使用“Office.Interop.Word”更新字段的代码变体。

如果您自己更改代码, Novacode DocX 可以支持 Docm 文件。我不想,也没有使用docm文件。在通过电子邮件发送时,Docm 文件具有与之关联的安全警告。所以自动更新宏是不可能的。

-八达通表情符号正在庆祝

于 2015-08-07T16:26:50.763 回答