如果你还不太清楚Dspframer.ocx怎么放到窗体上就看上一篇文章,里面详细介绍了是如何放到窗体上的。

链接:http://www.cnblogs.com/pingming/p/4182045.html

第一步 创建新窗体

创建一个新窗体,放置一个panel容器控件,我们就是要将dsoframer.ocx放到panel里面。

第二步 下面是所有调用的方法,有步骤的。

public partial class ExcelForm : DevExpress.XtraEditors.XtraForm
{
private AxDSOFramer.AxFramerControl m_axFramerControl = new AxDSOFramer.AxFramerControl();
public ExcelForm()
{
InitializeComponent(); } #region Excel 的加载 //总的加载Excel方法
private void Init(string _ExcelFilePath)
{
try
{
RegControl(); if (!File.Exists(_ExcelFilePath))
{
XtraMessageBox.Show("文件不存在或未标识的文件格式!", "提示信息");
return;
//throw new ApplicationException("文件不存在或未标识的文件格式!");
} AddAxFramerControl();//加载填充控件

m_axFramerControl.Titlebar = false;//是否显示excel标题栏
                  m_axFramerControl.Menubar = false;//是否显示excel的菜单栏
                  m_axFramerControl.Toolbars = false;//是否显示excel的工具栏

                InitOfficeControl(_ExcelFilePath);
}
catch (Exception ex)
{
throw ex;
} } //第二步:向panel填充AxFramerControl控件
private void AddAxFramerControl()
{
try
{
this.panelExcel.Controls.Add(m_axFramerControl);
m_axFramerControl.Dock = DockStyle.Fill;
}
catch (Exception ex)
{
XtraMessageBox.Show(ex.Message);
throw;
} } //第一步:注册AxFramerControl
public bool RegControl()
{
try
{
Assembly thisExe = Assembly.GetExecutingAssembly();
System.IO.Stream myS = thisExe.GetManifestResourceStream("NameSpaceName.dsoframer.ocx"); string sPath = System.AppDomain.CurrentDomain.BaseDirectory + @"\dsoframer.ocx";
ProcessStartInfo psi = new ProcessStartInfo("regsvr32", "/s " + sPath);
Process.Start(psi);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
return true;
} //下面这个方法是dso打开文件时需要的一个参数,代表office文件类型
/// <summary>
/// 根据后缀名得到打开方式
/// </summary>
/// <param name="_sExten"></param>
/// <returns></returns>
private string LoadOpenFileType(string _sExten)
{
try
{
string sOpenType = "";
switch (_sExten.ToLower())
{
case "xls":
sOpenType = "Excel.Sheet";
break;
case "doc":
sOpenType = "Word.Document";
break;
case "ppt":
sOpenType = "PowerPoint.Show";
break;
case "vsd":
sOpenType = "Visio.Drawing";
break;
default:
sOpenType = "Word.Document";
break;
}
return sOpenType; }
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 第三步:初始化office控件,加载Excel
/// </summary>
/// <param name="_sFilePath">本地文档路径</param>
private void InitOfficeControl(string _sFilePath)
{
try
{
if (m_axFramerControl == null)
{
throw new ApplicationException("请先初始化office控件对象!");
} //this.m_axFramerControl.SetMenuDisplay(48);
//这个方法很特别,一个组合菜单控制方法,我还没有找到参数的规律,有兴趣的朋友可以研究一下
string sExt = System.IO.Path.GetExtension(_sFilePath).Replace(".", "");
//this.m_axFramerControl.CreateNew(this.LoadOpenFileType(sExt));//创建新的文件
this.m_axFramerControl.Open(_sFilePath, false, this.LoadOpenFileType(sExt), "", "");//打开文件
//隐藏标题
this.m_axFramerControl.Titlebar = false;
}
catch (Exception ex)
{
throw ex;
}
} /// <summary>
/// 关闭当前界面
/// </summary>
public void Close()
{
try
{
if (this.m_axFramerControl != null)
{
this.m_axFramerControl.Close();
}
}
catch (Exception ex)
{
throw ex;
}
} //加载Excel 按钮
private void sbtnLoading_Click(object sender, EventArgs e)
{ Init(System.AppDomain.CurrentDomain.BaseDirectory + "excel\\项目汇总表.xls");
} //关闭
private void ExcelForm_FormClosing(object sender, FormClosingEventArgs e)
{
Close();
} #endregion
}

C# Dsoframer.ocx 如何在winform中嵌入Excel,内嵌Excel,word的更多相关文章

  1. C# 如何在winform中嵌入Excel,内嵌Excel,word

    近使用.net做一个小软件遇到一个问题,就是想实现把excel表格在winform中打开,同时可以操作,不单单是打开.或者就提取数据.在网上找了好多资料,发现这方面的资料比较少,即使有,都是旧版本的使 ...

  2. 如何在WinForm中发送HTTP请求

    如何在WinForm中请求发送HTTP 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: string strURL = &q ...

  3. WinForm中嵌入WebBrowser,并且支持C#和JS方法的相互调用

    纯粹WinForm界面不够友好,实现数据复杂度高的处理有些力不从心,所以看了看api以后决定用html来做. 我的wlw的代码插件不是很好用,大家凑合看吧 类前说明引用和权限 1: [Permissi ...

  4. winform中嵌入Ppt、Word、Excel

    1.下载DsoFramer_KB311765_x86.exe 2.安装,默认路径安装C:\DsoFramer. 3.注册:开始菜单——>运行 输入:regsvr32 C:\DsoFramer\d ...

  5. C#实现在Winform中嵌入Word和Excel

    http://www.cnblogs.com/wuzi145/archive/2012/05/08/2490680.html 在此只是介绍一个简单控件:dsoframer.ocx的使用,这个控件需要通 ...

  6. 如何在 Go 中嵌入 Python

    如果你看一下 新的 Datadog Agent,你可能会注意到大部分代码库是用 Go 编写的,尽管我们用来收集指标的检查仍然是用 Python 编写的.这大概是因为 Datadog Agent 是一个 ...

  7. WPF中嵌入Office编辑器(支持Word、Excel、PPT、Visio等)

    现在有一个项目,需要使用wpf做一个简单的客户端,用来生成word.excel.ppt.visio等文档,这就需要能够在wpf中嵌入office的编辑器,并对office文档进行编辑. 在网上搜索了一 ...

  8. 微信小程序中使用 <web-view> 内嵌 H5 时,登录问题的处理方法

    在微信小程序的开发中,经常遇到需要使用 <web-view></web-view> 内嵌 H5 的需求.在这种需求中比较棘手的问题应该就是登录状态的判断了,小程序中的登录状态怎 ...

  9. 如何在 JS 中嵌入大量 HTML 代码 --更新2017-10-10 16:37:09

    一.一般方式 方式1:\ 要写在标签后面,看例子 var longString = "\ ------------------------\ ------------------------ ...

随机推荐

  1. opencv移植(二)

    原文:https://blog.csdn.net/Guet_Kite/article/details/78667175?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接 ...

  2. STM32(10)——窗口看门狗

    简介: 窗口看门狗(WWDG)通常被用来监测由外部干扰或不可预见的逻辑条件造成的应用程序背离正常的运行序列而产生的软件故障.除非递减计数器的值在 T6 位 (WWDG->CR 的第六位)变成 0 ...

  3. openssl windows平台编译库

    首先感谢http://blog.csdn.net/YAOJINGKAO/article/details/53041165?locationNum=10&fps=1和https://www.cn ...

  4. django创建第一个子应用-3

    在Web应用中,通常有一些业务功能模块是在不同的项目中都可以复用的,故在开发中通常将工程项目拆分为不同的子功能模块,各功能模块间可以保持相对的独立,在其他工程项目中需要用到某个特定功能模块时,可以将该 ...

  5. centos配置NTP服务器

    时间服务器: NTP(Network Time Protocol,网络时间协议)是用来使用网络中的各个计算机时间同步的一种协议,NTP服务器就是利用NTP协议提供时间同步服务的. 一.环境准备: 1. ...

  6. HTTP报文中的100状态码

    HTTP状态码(status codes)是HTTP协议中,响应报文的起始行中包含的一种服务器用于向客户端说明操作状态的三位数字.例如在一个正常的GET请求完成后,服务器会向客户端返回 HTTP/ O ...

  7. 常用MySQL语法

    一.进入MySQL与退出MySQL 1.进入MySQL步骤:先打开CMD命令行:命令:C:\Users\admin> mysql -h(域名,可填或不填) -u(账号) -p(密码): 连接成功 ...

  8. 【8086汇编-Day5】第三次实验

    练习一 结果展示: 这个程序执行下来貌似打印了数字36,但其实是两个数字3.6: 这段就是用来打印3:首先ah里放2,跟后面的int 21h结合起来就是调用21号中断例程的2号子程序,用来打印到标准输 ...

  9. C++中的引用常见用法

    1.引用的内涵 引用就是给变量取外号而已. 2.四种不能使用引用的情况 void &r=x; //不能建立void类型引用 int &&r=x; //不能建立引用的引用 int ...

  10. Redis系列九 Redis集群

    1. redis-cluster架构图 redis-cluster投票:容错 架构细节 ①所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. ②节点的fai ...