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);
    }

转载于:https://www.cnblogs.com/karlsunstrider/p/5148430.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值