当前位置: 代码迷 >> .NET Framework >> 关于 在Winform中 Microsoft.Office.Interop.Word 的操作有关问题
  详细解决方案

关于 在Winform中 Microsoft.Office.Interop.Word 的操作有关问题

热度:136   发布时间:2016-05-01 23:26:39.0
关于 在Winform中 Microsoft.Office.Interop.Word 的操作问题
Microsoft.Office.Interop.Word._Application wordApplication = new Microsoft.Office.Interop.Word.ApplicationClass();

Microsoft.Office.Interop.Word._Document wordDocument = wordApplication.Documents.Add(ref nothing, ref nothing, ref nothing, ref nothing);

请问wordApplication 和 wordDocument  能直接 保存到 二进制数组里面吗??

现在 是把wordDocument保存成文件,然后从文件中读数据到数组中的,我想直接保存为二进制数组数据。  

另外,能通过wordDocument或者wordApplication 在代码中直接调用打印机打印出来文档吗???
------解决思路----------------------
不可以,Document可以先SaveAs到文件,再读取到二进制数组。

Application更不可以,它是Word程序的一个代理接口,脱离了Word,它的存在就没有意义了。
------解决思路----------------------
不知道你说的“直接 保存到 二进制数组里面”具体是什么意思。如果你说的是.net对象二进制序列化,那么显然不行。所有的基于COM的“桥接”对象都不支持序列化。只有 Office 系统自己懂得如何真正创建内存中的对象。

word、excel等等,“文档就是应用程序”。因此你传送给别人一个文档,也就传送给别人一个(word或者excel)程序。代码就编译在文档中(这些被 Office 系统创建 VBProject对象)。你可以通过 Microsoft.Office.Interop 跨进程去操作 COM 对象,被 Office 系统创建的、表示文档或者工作簿的 COM 对象。但是这跟.net内部的对象不同,隔着好几层“大山”无法解决。

最后一个问题就非常容易理解了。可以通过 Microsoft.Office.Interop 跨进程操作对方,例如调用对方的 Print 方法启动打印功能。凡是你可以通过 VBA 编程的东西,你都可以试试通过你的 c# 调用相同的东西。Office 在这一点上设计的足够完善了,而且那是几十年前(还没有.net的时候)就已经完善了,并且任何一个支持 COM 跨进程服务互操作的应用的程序都可以这样控制 Office,10年前的互联网上就有着数不尽的文档,不是只有c# 才能对 Office 对象进行调用。
  相关解决方案