【问题标题】:Write custom properties in word document when Word is not runningWord 未运行时在 Word 文档中写入自定义属性
【发布时间】:2014-01-06 23:39:56
【问题描述】:

我的 .NET 应用程序(能够标记文档的文件管理器)必须能够读取和写入 Word 文档中的自定义属性。

应用程序必须能够在 Word 中打开文档和 Word 未运行时执行此操作。

(它必须对 Excel 和 Powerpoint 文档执行相同的操作,而不仅仅是 Word 文档。)

我的问题是如何解决这个问题。

更新:这是我认为可以解决的方法:

1) 处理文档未在 Word 中打开的情况:应用程序将通过the openXml api 将自定义属性直接写入文档文件。但是如果文档是 .doc 而不是 .docx 怎么办?我应该使用什么 API?

2) 处理在 Word 中打开文档的情况:我将创建一个 Word 插件,然后应用程序将向插件发送一条消息(通过命名管道),告诉“添加这个文档的自定义属性”。然后加载项将添加属性,如here 所述。

你觉得上面的架构有问题吗?

感谢您的任何建议。

【问题讨论】:

  • "应用程序将通过 openXml api 将自定义属性直接写入文档文件。" - 此应用程序是否会在没有 Microsoft Office 的机器上运行,或者仅当机器中有 Microsoft Office 时才运行。
  • 应用程序必须在没有办公室的机器上运行。
  • 您可以有一个使用 Open XML 的项目,并且可以从您的应用程序和 WordAddin 中调用它。一旦设置了自定义属性,它就会使文档变脏并且必须保存。我认为无论是您的应用程序还是插件,都应该从它的调用点保存文档。

标签: ms-word vsto


【解决方案1】:

这是我在此期间找到的问题(1)的答案:

要在旧的 .doc 文件 (office 2003) 中读取和写入自定义属性,我使用了dsofile.dll

然后

regsvr32 DSOFile.dll

然后,在您的 Visual Studio 项目中,添加对 dsofile.dll 的引用。

然后编写代码。

一个困难是该库仅适用于 32 位。对于 64 位,不同之处在于:我必须找到 64 位编译版本 (link)。然后我又不得不

regsvr32 DSOFile.dll

然后,我在我的 vstudio 项目中添加了对那个 dll 的引用不是,而是对 Interop.DSOFile.dll 的引用。

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 2016-02-16
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多