【问题标题】:Automatically edit word documents using C#使用 C# 自动编辑 word 文档
【发布时间】:2015-09-29 09:24:40
【问题描述】:

我有一个现有的word文档,FinalReport.docx,它有自己的模板,我实际上是手动编辑的:标题、一些段落和一些表格的内容取自其他Matlab文档,比如file1.m、file2。米等 最后我需要更新 FinalReport 索引。 我想自动执行此操作,可能使用 C# 或 VBA。有什么建议吗?

【问题讨论】:

  • 欢迎来到*。您尝试做的事情在 C# 中肯定是可能的。但是,为了帮助您,我们需要查看您到目前为止所做的尝试。当/如果您在某个地方遇到特定的编码问题时,社区随时准备提供帮助。

标签: c# matlab vba


【解决方案1】:

您可以使用 Microsoft.Office.Interop.Word 命名空间编辑 Word 文档。谷歌查找有关该主题的教程 (here's one)。它要求您安装了 MS Word,如果您首先在同一台计算机上完成手动步骤,我认为这不是问题。它使用 COM 接口来控制 Word。

对于像这样的简单事情,它比 Open XML SDK 更容易,但对于高级操作(例如,在服务器上创建报告),Open XML SDK 会更好。而且 SDK 不需要您安装 MS Word。

VBA 也可用于执行此操作,这对初学者来说会更好,因为您可以使用 macro recorder 来帮助您入门,然后手动编辑它生成的 VBA 以添加您无法使用宏记录器。

这三个我以前都做过。如果这是您第一次体验自动化 MS Word 任务,我建议您从 VBA 开始。

【讨论】:

  • Visual Studio Tools for Office (VSTO) 怎么样?它包括 Microsoft.Office.Interop.Word 还是它们有不同的用途?
  • VSTO 有不同的用途。它允许 Office 托管 .NET 运行时,以便您可以使用 .NET 语言(VBA 不是)自定义 Office。这与 Microsoft.Office.Interop.Word 使用的 COM 接口不同。除非您打算将您的工作分发给您不认识的人,否则这似乎有点矫枉过正。
  • 我明白了。所以 VSTO 更强大,不是吗?无论如何,我实际上正在使用 VBA,即使我在能够编写一些代码之前从未使用过它。使用 Range、Paragraphs、Sections 和 Words 可以让您自然地操作单词文本。我想我很快就会得到我的解决方案,然后我需要扩展我的代码来操作 Excel。所以我现在将使用 VBA,一旦我得到一些有用的东西,我就会切换到 Microsoft.Office.Interop。
【解决方案2】:

您可以使用 Microsoft 的 Open XML SDK 创建和编辑 .docx (Open XML) 文件。常见的编辑操作见link,如果列出了您需要的,只需下载SDK并按照示例进行操作即可。

【讨论】: