【问题标题】:Opening a Word file in C# with Office Develeper Tools for Visual Studio(microsoft.office.tools.word)使用 Visual Studio 的 Office 开发人员工具 (microsoft.office.tools.word) 在 C# 中打开 Word 文件
【发布时间】:2019-02-07 20:22:20
【问题描述】:

使用 PIA (https://docs.microsoft.com/en-us/visualstudio/vsto/office-primary-interop-assemblies?view=vs-2017),我可以轻松打开 word 文件并在其中执行任务。但是 PIA 不再适用于 Office 2016。我的问题是,是否有替代方案?现在有“Visual Studio 的 Office 开发人员工具”。我可以用吗?

如何与 PIA 配合使用:

Application app = null;
Document doc = null;
app = new Microsoft.Office.Interop.Word.Application();
doc = Microsoft.Office.Interop.Word.Documents.Open(filePath);  
// .. do something
doc.Close();
app.Quit();

是否可以使用“Visual Studio 的 Office 开发人员工具”中的 Microsft.Office.Tools.Word 做类似的事情?

【问题讨论】:

  • 你为什么这么说the interop Mode is not available anymore for Office 2016.?互操作不是模式。 "Office Developer Tools for Visual Studio" 没有代替 interop 使用,它们以其他名称使用超过 10 年来创建 Office 插件和扩展
  • 你是对的。我实际上是指 Office 主要互操作程序集。我改变了我的问题,希望现在很清楚。但据我所知,Office 2016 的 pia 不再可用,请参阅我提供的链接。
  • PIA 很方便,因此您不必添加对 COM 对象库本身的引用。该链接也没有说它们也已停产。在任何情况下,PIA 都针对特定的 COM 接口版本。那些并没有消失。只要安装的 Word 版本支持旧的 PIA,它们仍然可以工作。同样,并不意味着 Word 2016 没有 PIA

标签: c# ms-word


【解决方案1】:

从 2007 年起的所有 Office 版本都随 Office 安装分发 PIA;从 Office 2010 开始,它们也默认安装。它们仍然存在于 Office 2016/365(和 Office 2019)中。

早期存在一些问题,PIA 是否应与 Office 一起安装,这就是为什么有/曾经有“可分发”可用于 .NET 解决方案的原因。 .NET 解决方案将检查是否安装了所需的 PIA,如果没有安装它们。从那时起,在最终用户计算机上安装 PIA 不再是问题 - 默认情况下已完成。出于这个原因,Microsoft 不再提供可分发的内容 - PIA 应该在那里。所以,distributables 已经停止使用......因为它们不再需要了。

VSTO(Visual Studio Tools for Office - 问题中的“工具”命名空间)依赖于 PIA,所有其他 IDTExtensibility2 加载项和所有使用“互操作”的 COM 应用程序也是如此。

可以生成一组自定义 IA 以与应用程序一起分发,以使该应用程序独立于 PIA。 PIA 和 IA 之间的区别在于,PIA 始终由软件制造商提供,并且经过优化。 IA 和 PIA 的 COM 对象模型语法可能不同(工作方式不同)。有关于创建和使用 IA 的“外面”文章,但起点是 Visual Studio 工具 tlbImport.exe

代码还可以通过使用后期绑定 (PInvoke) 来自动化完全没有 IA 的 Office 应用程序。这是一项相当多的工作,并且需要对 Office 库有深入的了解(无需 Intellisense)。但这是可能的。 (它是任何类型库功能的变通方法,由于某种原因未包含在 PIA 中。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多