WinForm 内嵌 Office 文档 解决方案测试(非DSOFRAME 纯C#代码,网上独一份)

以前项目有需求在网页中嵌入Word文档,网上有很多这样的ActiveX控件,但都是商业的,授权要几万。

其他的解决方案:

1.利用WebBrowser打开Office文件,但微软在一个补丁中将其默认设为关闭,想要使用得更改注册表,并且很多东西不可控。

2.利用微软已经不再支持的一个示例 DsoFramer_KB311765_x86.exe,网上绝大多数此类控件是基于此的,但微软已经将其移除网站,

  不再提供更新与支持,而且源代码使用的是C++ 用 WIN32 SDK 写的,没有利用ATL库,本人C++不行,没看懂。

3. Word文档转成HTML相关页面直接展示。

 

以上三种除了第2种会C++的能利用外别的对我都不行,伟大的google告诉我微软在.Net Framework 2.0 beta 1 时代曾提供一个控件 ActiveDocumentHost,

即活动文档宿主,可以打开任何OLE文档类型,无奈的是不知道什么原因微软在正式发布时放弃了此控件,但至今在各个版本的System.Windows.Forms.dll程序集的

资源里还有System.Windows.Forms.ActiveDocumentHost.bmp这个图标,我知道了,微软很坏,让我看得见用不着。。。。

经过很久的Google后,终于下载到 dotnetfx_2.0_Beta_1(2.0.40607.42)2004-07-27 这个版本的 Framework,反编译之,提取出ActiveDocumentHost控件重新编译。

于是就有了现在的WinForm 内嵌 Office 文档解决方案。

注意:提取完毕后编译无错,基本测试正常运行,但有版权问题,并且需要双击或单击或获得焦点后才能编辑,很痛苦,正在解决。

之后将会将其写成ActiveX以便在IE中用。

如果有哪位大大能修改它希望给一份代码,谢谢!

实现的基本原理就是实现一个活动文档容器。

代码下载地址:https://files.cnblogs.com/binsys/LabsB.Controls.7z

posted @ 2012-02-13 00:13  BinSys  阅读(3075)  评论(20编辑  收藏  举报