大家好,小弟想写一个程序,其中程序可以把Excel程序显示在程序界面中,就像在程序界面中打开Excel

解决方案 »

  1.   

    datagridview详见:http://hi.baidu.com/ytit/blog/item/19ce783b3943f5fa55e72353.html
      

  2.   

    首先谢谢楼上的建议,但这并不是我想实现的,而是把office中的Excel程序嵌入在本人开发的程序窗体内。。
      

  3.   

    dsoframe能用在winform上吗?本人想开发个桌面程序,而不是web程序。谢谢
      

  4.   

    這是你的第一選擇http://www.ocxt.com/
    我博客有介紹
    http://ufo-crackerx.blog.163.com/blog/static/113078778201174113024397/
      

  5.   

    winform里不可以嵌excel,可以参考使用一些类似的控件,很多都是第三方开发的。
      

  6.   

    就要实现你三楼要的效果吗?
    那是打开excel,并且嵌入到你的控件面板里了。
    这个引入SetParent这个WindowsAPI,
    把启动的那个excel程序添加到panel里就好了。
    另外你展示的那个图片,好像是delphi或CB写的
      

  7.   

    是的,我是需要实现三楼的效果。
    依您所说,我在程序里打开了Excel,然后怎么获得Excel的对象并
    把它放到Panel里面呢?请给个简单的例子,如果是C#就求之不得了。谢谢另外,我需要操作这个Excel(除了用户操作,还有程序对excel的操作),又如何实现呢?
    麻烦提示提示...
      

  8.   

    dsoframe当然可以嵌入到Winform里
      

  9.   

    SetParent API函数或者用WebBroswer控件都可以.
      

  10.   


    是的,我是需要实现三楼的效果。
    依您所说,我在程序里打开了Excel,然后怎么获得Excel的对象并
    把它放到Panel里面呢?请给个简单的例子,如果是C#就求之不得了。谢谢另外,我需要操作这个Excel(除了用户操作,还有程序对excel的操作),又如何实现呢?
    麻烦提示提示...
      

  11.   

    dsoframer.ocx自己去网上搜资料。
    我刚用过这个,他只是一个组件,调window office。
    微软几年前就放弃这个了。
      

  12.   

    http://www.ocxt.com/ 是最好的選擇,沒有其它能相比的
      

  13.   

     Microsoft.Office.Interop.Excel.Application excel_H = new Microsoft.Office.Interop.Excel.Application();
    excel_h.visible=true;
    intptr hwnd=excel_h.hwnd;
    setparent(hwnd,this.panel1);
      

  14.   

    可以,dsoframe是微软自己出的,你要的功能都有,但据说和off2007某个功能冲突,而且微软现在也不提供下载了,我最近也在研究这个
    另外
                  string strFileName = @"d:\11.xls";
                Object refmissing = System.Reflection.Missing.Value;
                webBrowser1.Navigate(strFileName, refmissing.ToString());  
    也可以,再多功能自己搜索下,(最大缺点是同时只能打开1个EXCEL) 
      

  15.   

    谢谢大家,问题解决了。本人利用以上的方法实现。
    但是有点无奈,在msdn没有找到对Application 正确的说明,只能从网上找一些相关的例子看。
    下面大概是实现的代码,如果有问题,请提示。。谢谢楼上那么多位大哥        [DllImport("user32.dll", CharSet = CharSet.Auto)]
            Microsoft.Office.Interop.Excel.Application app = null;
            Workbook workbook1 = null;
            private void sdasdasdToolStripMenuItem_Click(object sender, EventArgs e)
            {
                app = new Microsoft.Office.Interop.Excel.Application();
                workbook1 = app.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
                workbook1.Activate();//激活sheet1表
                app.Visible = true;
                IntPtr hwnd = (IntPtr)app.Hwnd;
                SetParent(hwnd, this.panel1.Handle);
                           
            }
      

  16.   

    补充[DllImport("user32.dll", CharSet = CharSet.Auto)]
    public extern static IntPtr SetParent(IntPtr hChild, IntPtr hParent);
      

  17.   

    不过有个问题,有时候打开的excel跟正常打开的Excel一样,有时候就只显示sheet,菜单栏等等全都没了
      

  18.   

    没有了说明你打开了两个以上同类文档, 因为只有一个文档处于激活状态,这个在MSDN上有相关说明的.
      

  19.   

    我问一下楼主?你是如何控制EXCEL在panel中的大小的?急?感谢...