以前项目有需求在网页中嵌入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中用。
如果有哪位大大能修改它希望给一份代码,谢谢!
实现的基本原理就是实现一个活动文档容器。