DsoFramer
-
配置
1.从网上下载安装程序DsoFramer_KB311765_x86.exe,建议使用x86版本,64未版本可能会有兼容性问题。按照提示安装程序。
- 2.把dsoframer.ocx拷贝到系统目录下(c:\windows\system32),并注册。
打开CMD,执行regsvr32.exe c:\windows\system32\dsoframer.ocx - 3.在工具箱中右键——>选择项——>COM组件下找到DSO Framer Control Object——>勾选——>确定。
- 4.在工具箱中右键——>选择项——>COM组件下找到DSO Framer Control Object——>勾选——>确定。
- PS:这只是一种配置的方式,貌似还可以在后台动态注册,添加。
-------分割线-------
-
使用
1.在工具箱中找到DSO Framer Control Object,拖动到窗口中就可以使用了。
-
2.图中的ActiveX Document Object部分就是我们需要的打开office文档控件。由于我的项目中要求只有Excel和Word用此控件打开,其余格式的文件都是直接读取文件内容所以用了一个MemoEdit来显示。当文件格式为Excel或Word时就用BringToFront()把DsoFramer控件显示在最前面,把MemoEdit用SendToBack()放到后边,然后设置DsoFramer控件的Dock属性为Fill就可以了。
图中右侧部分的属性——>杂项中可以设置标题栏,菜单栏和工具栏的显示/隐藏。
Titlebar:标题栏
Menubar:菜单栏
Toolbar:工具栏 - 3.后台使用的方式如下,可以读取本地文件也可以读取服务器文件。其中打开本地文件的时候如果对文件内容做出任何改动,当关闭窗口后都会自动保存到原文件,虽然Open()方法中虽然有ReadOnly参数的设置,但是截至到此文编写时为止都是不生效的,也许Web上可以,但实测Winfom不行。
12
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if
(ext ==
"xlsx"
|| ext ==
"docx"
)
{
MemoEdit1.SendToBack();
axFramerControl1.BringToFront();
axFramerControl1.Dock = DockStyle.Fill;
axFramerControl1.Open(filePath);
}
else
{
MemoEdit1.BringToFront();
axFramerControl1.SendToBack();
MemoEdit1.Dock = DockStyle.Fill;
MemoEdit1.Text = File.ReadAllText(filePath);
}