Winfom打开Office文件

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不行。

    1
    2
    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);
    }
posted @ 2016-01-21 15:26  KarlSunstrider  阅读(313)  评论(0编辑  收藏  举报