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

如果你还不太清楚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();//加载填充控件

                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
}
时间: 2024-07-29 23:08:31

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

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

近使用.net做一个小软件遇到一个问题,就是想实现把excel表格在winform中打开,同时可以操作,不单单是打开.或者就提取数据.在网上找了好多资料,发现这方面的资料比较少,即使有,都是旧版本的使用方法.在这里分享一下自己用vs C# 在winform中嵌入excel的一些经验. 首先,本人使用的VS 版本是2010,据我所知,2010的vs是没有这个控件(就是想button控件能直接拉进去的).因此我们需要一个第三方控件来实现这个功能. 然后,那么我们需要的第三方控件叫什么呢?这个控件就是

如何在WinForm中发送HTTP请求

Winform窗体中发送HTTP请求 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: 1 string strURL = "http://localhost/Play/CH1/Service1.asmx/doSearch?keyword="; 2 strURL +=this.textBox1.Text; 3 System.Net.HttpWebRequest request; 4 // 创建一个HTTP请求 5

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

原文:WPF中嵌入Office编辑器(支持Word.Excel.PPT.Visio等) 现在有一个项目,需要使用wpf做一个简单的客户端,用来生成word.excel.ppt.visio等文档,这就需要能够在wpf中嵌入office的编辑器,并对office文档进行编辑. 在网上搜索了一下,发现了一个很好的示例:通过在wpf中嵌入DSOFramer控件来完成对office的编辑功能.效果图如下: 闲话不多说,直接上传源代码(别人的源码,我在百度网盘里面共享了),下载地址:http://pan.b

如何在MySQL中实现组内前几名的输出

关于问题 如何查询组内最大的,最小的,大家或许都知道,无非是min.max的函数使用.可是如何在MySQL中查找组内最好的前两个,或者前三个? 什么是相关子查询 在提出对于这个问题的对应方法之前,首先来理解一个概念:相关子查询. 所谓相关子查询,就是其查询的执行依赖于外部查询.多数情况下是子查询的where子句中引用了外部查询的表.执行过程: 从外层查询中取出一个元组,将元组相关列的值传给内层查询 执行内层查询,得到子查询操作的值 外查询根据子查询返回的结果或结果集得到满足条件的行 然后外层查询

如何在javaee中嵌入axis2的管理平台

接着上篇博文,我们部署成功了我们的webservice 接下来我们把解压后的axis2.zip文件axis2-1.6.2-bin\axis2-1.6.2\webapp的目录下面的axis2-web 拷贝到web-root下面,然后重新启动tomcat服务器: 在浏览器地址栏输入:http://localhost:8177/MyAxis/services/listServices 这样我们可以看到ws管理页面: 我们可以看到列出了我们当前的所有的服务,有AxisService 点击AxisServ

在winform中使用cefsharp.winform嵌入浏览器(含视频教程)

免费视频教程和源码: https://www.bilibili.com/video/av84573813/ 1. 开始使用CefSharp在Winform中嵌入网页 2. 解决重复打开Cefsharp出现崩溃的问题 3. 使用本地网页,cefsharp调用javascript代码 实现打开CefSharp的调试工具 打开本地命令行窗口 获取电脑信息 关闭窗体 4. 把网站打包成windows服务,供winform调用 参考: ASP.NET Core项目基于Windows 服务的打包托管 htt

在Winform中播放视频等【DotNet,C#】

在项目中遇到过这样的问题,就是如何在Winform中播放视频.当时考察了几种方式,第一种是直接使用Windows Media Player组件,这种最简单:第二种是利用DirectX直接在窗体或者控件上绘图,这种比较复杂.于是采用的是第一种方法. 先从VS的工具箱里添加Windows Media Player组件,方式是打开工具箱,在最下面的空白处点击右键,选择项,然后在弹出的对话框里切换到Com组件标签项,找到“Windows Media Player”项并选中,确定后将在工具箱中看到多出一个

WinForm中调用WPF控件

WinForm中调用WPF控件 在WinForm中可以使用WPF中的控件,或者由WPF创建的自定义控件: 步骤1:创建WinForm工程: 步骤2:在WinForm工程的解决方案资源管理器中,在刚刚创建的WinForm解决方案中新建或者添加现有的WPF用户控件工程: 步骤3:在WPF中创建自定义的控件,或者添加WPF控件到面板上: 步骤4:在WinForm面板上添加ElementHost控件(工具箱中): 步骤5:生成解决方案: 步骤6:在刚刚的ElementHost中的Child属性中添加刚刚

使用cefsharp在winform中嵌套浏览器,解决程序闪退问题,你也可以做一个红芯浏览器^v^

使用cefsharp在winform中嵌套浏览器 简单使用cefsharp在winform中嵌套浏览器 在上一节,我们学习了如何简单地在winform中嵌入chromium浏览器,我在使用这个开发项目时,需要点击一个按钮,弹出嵌入浏览器的窗体,出现一个问题,就是第一次点击按钮可以正常打开浏览器,第二次点击就会出现卡壳,闪退问题.由于对于chromium这个庞大的程序不太了解,上网搜索相关文章解决了该问题: 就是在嵌入浏览器的窗体类中不能用Cef.shutdown();需要在调用的主窗体中才能调用