c# - 与多个版本的 Word 互操作

标签 c# .net ms-word interop

我想使用 Office Interop 在一个应用程序中支持所有 Office 套件。

我可以在 Visual Basic 中使用 CreateObject() 来完成此操作吗? 问题是我无法预先看到这些功能,并且必须在文档之间跳转才能完成它(由于使用了 Object)。

如果我使用工厂模式并为每个版本的 Office 都有一个实现,它会起作用吗?

示例:

Factory->ABaseOffice GetImplementation(string office_version)

返回由 Office2000OfficeXP 实现的 ABaseOffice 实例。

这样,如果有新的 Office 版本出现,我只需为其编写特定的代码,而不必担心以前的版本或依赖第 3 方软件。

我不想关注COM/Interop - Supporting Multiple Versions路线。

最佳答案

是的 - 理论上这是可行的...问题是您绝对不能在同一项目中引用不同版本的 Interop-DLL...因此您仍然必须使用后期绑定(bind)方法来实现ABaseOffice 界面

更新 - 根据评论:

理论上,所描述的选项(请参阅 http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx )将允许添加这些引用...不这样做的几个原因:

  • 这些不仅仅是 Interop DLL 的 2 个版本
  • DLL 名称与 IIRC 相同(这会带来该文章中 Unresolved 问题!)
  • 结果真的很难理解/维护/调试

关于c# - 与多个版本的 Word 互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7991447/

相关文章:

c# - 如何在 while(dr.read()) 中运行 SqlCommand

c# - 以编程方式批处理文件以在夜间复制

c# - VS 2015 : C# NuGet Package restore failed. 文件或目录损坏无法读取

.net - 从预先存在的 MVC2 应用程序启动 Windows Azure

c# - 如何在父窗口最小化时防止子窗口最小化

Python - 使用 win32com.client 接受 Word 文档中的所有更改

c# - 将引用类型作为属性的实时结构在哪里

c# - 我怎样才能在这里使用泛型

android - 在 Android 中将 docx 转换为 html

.net - 使用 open xml sdk 代码,如何调整表格(在 ms word 文档中)以适应页边距?