国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

簡單實現(xiàn)C# form中嵌入并操作excel表

開發(fā) 后端
當我們實現(xiàn)from功能的時候需要把excel表嵌入到自己程序的C# form中,給客戶一個不用切換窗口的簡單的操作界面,下面筆者就為你講講在c#中如何實現(xiàn)。

當我們實現(xiàn)from功能的時候需要把excel表嵌入到自己程序的C# form中,給客戶一個不用切換窗口的簡單的操作界面,下面筆者就為你講講在c#中如何實現(xiàn)。

一、先要添加對Excel的引用。選擇項目-〉添加引用-〉COM-〉添加Microsoft Excel 9.0。(不同的office講會有不同版本的dll文件)。 

  1. using Excel;  
  2.    using System.Reflection;  
  3.    //產(chǎn)生一個Excel.Application的新進程  
  4.    Excel.Application app = new Excel.Application();  
  5.    if (app == null)   
  6.    {  
  7.     statusBar1.Text = "ERROR: EXCEL couldn't be started!";  
  8.     return ;  
  9.    }  
  10.    app.Visible = true//如果只想用程序控制該excel而不想讓用戶操作時候,可以設(shè)置為false  
  11.    app.UserControl = true;  
  12.    Workbooks workbooks =app.Workbooks;  
  13.    _Workbook workbook = workbooks.Add(XlWBATemplate.xlWBATWorksheet); //根據(jù)模板產(chǎn)生新的workbook  
  14. //  _Workbook workbook = workbooks.Add("c:\\a.xls"); //或者根據(jù)絕對路徑打開工作簿文件a.xls    
  15.     Sheets sheets = workbook.Worksheets;  
  16.    _Worksheet worksheet = (_Worksheet) sheets.get_Item(1);  
  17.    if (worksheet == null)   
  18.    {  
  19.     statusBar1.Text =  "ERROR: worksheet == null";  
  20.     return;  
  21.    }  
  22.    // This paragraph puts the value 5 to the cell G1  
  23.    Range range1 = worksheet.get_Range("A1", Missing.Value);  
  24.    if (range1 == null)   
  25.    {  
  26.     statusBar1.Text =  "ERROR: range == null";  
  27.     return;  
  28.    }  
  29.    const int nCells = 2345;  
  30.    range1.Value2 = nCells; 

二、將Excel用戶界面嵌入到自己的C# form中 

由于目前,C#和vb.net都不支持OLE技術(shù)(參見微軟支持中心Info:304562),,所以只有使用WebBrowser控件來完成此功能。(以下方法參見微軟支持中心Howto:304662)

1、右擊工具箱,選擇自定義工具箱,添加COM組件,選擇“Microsoft Web 瀏覽器”(對應(yīng)文件是\winnt\system32\shdocvw.dll),確定。在工具箱中將會出現(xiàn)文本為Explorer的WebBroser控件圖標。

2、在C#form1中添加WebBrowser控件。(對象名卻省是axWebBrowser1)

3、假定要打開的excel文件是: c:\a.xls。

  1. string strFileName = @"c:\a.xls";  
  2.     Object refmissing = System.Reflection.Missing.Value;  
  3.     axWebBrowser1.Navigate(strFileName, ref refmissing , ref refmissing , ref refmissing , ref refmissing);  

值得注意的是用WebBrowser控件不支持菜單合并,也就是說無法把Excel表的菜單帶入到我們的程序中。這是相對于OLE實現(xiàn)方法的一大缺點。幸好提供了可以把工具欄添加進來的功能,通過工具欄可以進行許多Excel專有的操作。

  1. //下面這句可以將excel本身的工具調(diào)添加進來  
  2.    axWebBrowser1.ExecWB(SHDocVw.OLECMDID.OLECMDID_HIDETOOLBARS,
     SHDocVw.OLECMDEXECOPT.OLECMDEXECOPT_DONTPROMPTUSER,
    ref refmissing , ref refmissing);  

三、回到本文提出的問題,如何操作嵌入的Excel?

首先需要明白,用WebBrowser“裝載”Excel"表,實際上仍然是在新的進程空間中運行Excel.exe。可以用任務(wù)管理器觀察。因此,只要我們能夠獲取Excel.Application對象,就能像上文一中所說的那樣操作Excel數(shù)據(jù)。
幸好可以通過WebBrowser的方法NavigateComplete提供的事件參數(shù)e來訪問Excel.Application。

  1. public void axWebBrowser1_NavigateComplete2(object sender, AxSHDocVw.DWebBrowserEvents2_NavigateComplete2Event e)  
  2.  {  
  3.   Object o = e.pDisp;  
  4.   Object oDocument = o.GetType().InvokeMember("Document",BindingFlags.GetProperty,null,o,null);  
  5.   Object oApplication = o.GetType().InvokeMember("Application",BindingFlags.GetProperty,null,oDocument,null);  
  6.      //Object oName = o.GetType().InvokeMember("Name",BindingFlags.GetProperty ,null,oApplication,null);    
  7.    //由于打開的是excel文件,所以這里的oApplication 其實就是Excel.Application  
  8.   Excel.Application eApp =(Excel.Application)oApplication;//這樣就可以象上文中所述來操作Excel了。  
  9.  }  

四、包含該webbrowser的C# form退出時候,如何確保excel進程也退出?(參見microsoft幫助中心kb317109)

  由于WebBrowser只不過是對Excel表的瀏覽,而Excel在單獨的進程中運行。所以要保證對該Excel對象eApp及其相應(yīng)的所有成員變量都釋放引用,才能保證在Form退出時excel進程跟著退出。這一點在一個程序需要多次打開關(guān)閉excel表時尤為重要。

  1.  Excel.Application oApp;  
  2.     Excel.Workbooks oBooks;  
  3.     Excel.Workbook oBook;  
  4.     Excel.Worksheet oSheet;  
  5.     ...........  
  6.   private void ExcelExit()  
  7.   {  
  8.      NAR(oSheet);  
  9.      oBook.Close(False);  
  10.      NAR(oBook);  
  11.      NAR(oBooks);  
  12.      oApp.Quit();  
  13.      NAR(oApp);    
  14.       Debug.WriteLine("Sleeping...");  
  15.      System.Threading.Thread.Sleep(5000);  
  16.      Debug.WriteLine("End Excel");  
  17.   }  
  18. private void NAR(Object o)  
  19. {  
  20.       try{System.Runtime.InteropServices.Marshal.ReleaseComObject(o);}  
  21.       catch{}  
  22.       finally{o = null;}  
  23.   }  

經(jīng)過試驗,我發(fā)現(xiàn)除了釋放這些變量以外,必須把該axWebBroswer1也銷毀掉,Excel進程才退出。否則的話,即使讓axWebBroser1去Navigate空內(nèi)容"about:blank", excel進程仍然不會退出。因此應(yīng)該將axWebBroser1所在的C# form關(guān)閉掉,或者直接調(diào)用axWebBrowser1.Dispose

【編輯推薦】

  1. 淺析C# XmlSerializer概念及作用
  2. C# XmlSerializer實現(xiàn)序列化淺析
  3. 淺析C# Xml Serializer的安全隱患
  4. C# XML序列化實例學(xué)習(xí)詮釋
  5. 淺析XML序列化的優(yōu)缺點
責任編輯:阡陌 來源: 博客園
相關(guān)推薦

2009-08-13 10:15:50

C#讀取Excel

2009-08-19 13:06:37

C#操作注冊表

2009-09-01 13:59:01

C#操作Excel

2009-08-18 16:14:05

C# 操作Excel

2009-08-18 16:20:09

C# 操作Excel

2009-09-10 11:26:59

C# form

2009-08-18 13:49:21

C# 操作Excel

2009-08-18 15:49:19

C# 操作Excel

2010-02-06 15:15:31

C++ Builder

2009-08-18 16:04:12

C# 操作Excel

2024-07-22 14:34:20

簡單工廠模式C#

2009-08-11 14:51:47

C#讀取Excel中數(shù)

2009-09-01 14:45:45

C#創(chuàng)建Excel文件

2009-08-18 14:25:05

C# 操作Excel

2009-08-18 14:36:36

C# 操作Excel

2009-08-24 14:14:56

C#導(dǎo)入Excel表

2009-09-07 15:27:04

C# MessageB

2009-08-31 17:53:20

C#實現(xiàn)索引器

2009-09-02 14:33:57

C#類實現(xiàn)接口

2009-08-28 15:49:45

C#對INI文件操作
點贊
收藏

51CTO技術(shù)棧公眾號

国产精品美日韩| 欧美亚洲一级片| wwwww在线观看免费视频| 色综合夜色一区| 日本一级理论片在线大全| 亚洲日本欧美日韩高观看| av在线中出| 亚洲电影免费观看高清| 综合精品久久| 色婷婷精品国产一区二区三区| 色呦哟—国产精品| 亚洲一区二区三区香蕉 | 精品夜夜嗨av一区二区三区| 丰乳肥臀在线| 偷拍自拍在线| 久久免费精品日本久久中文字幕| 国产91精品一区二区麻豆网站 | 国产精品女同一区二区三区| 一区二区三区在线视频看| 波多野洁衣一区| 网上成人av| 红桃av永久久久| 国产欧美一级| 丁香视频免费观看| 国产精品久久久久久网站 | 日本高清中文字幕| 欧美日韩国产91| 91色.com| av成人免费看| 在线国产精品网| 欧美在线看片a免费观看| 自拍视频一区| 最近中文视频在线| 国产精品旅馆在线| 亚洲一区二区三区国产| 99国内精品久久久久久久| 福利在线播放| 异国色恋浪漫潭| 韩国精品一区二区| 欧美白人做受xxxx视频| 欧美高跟鞋交xxxxxhd| 精品丝袜久久| 99视频在线视频| 欧美一区二区福利视频| 亚洲一区二区三区免费| 精品视频一区二区三区四区| 一区二区三区四区不卡视频| caoporn视频在线观看| 国产伦精品一区二区三区视频黑人| 一区二区精品| 99精品国产九九国产精品| 成人黄色在线播放| 国产盗摄视频一区二区三区| 在线观看视频你懂的| 亚洲999一在线观看www| 久久三级视频| aaa大片在线观看| 欧美一区二区三区男人的天堂| 蜜桃av一区| 你懂的免费在线观看| 日韩视频一区二区| 91香蕉视频污在线| 综合久久伊人| 日本成人黄色网| 国产精品高潮视频| 一本色道综合亚洲| 18成人免费观看视频| 成人片在线看| 亚洲精品女av网站| 日韩丝袜美女视频| 蜜臀va亚洲va欧美va天堂| 青草久久伊人| 男人艹女人网站| 亚洲视频在线观看免费| 亚洲欧美日韩国产一区二区三区| 精品1区2区3区4区| 国产精品亚洲综合在线观看 | 午夜欧美一区二区三区在线播放| 国产精品一区二区三区四区| 欧美片第1页综合| 日韩精选视频| 欧美大片aaa| 69免费视频| 欧洲xxxxx| 亚洲精品影院| 水蜜桃亚洲一二三四在线| 欧美亚州韩日在线看免费版国语版| 成人在线视频播放| 蜜桃精品视频| 爱福利在线视频| 乱一区二区三区在线播放| 国产成人涩涩涩视频在线观看| 亚洲福利一区二区三区| 成人黄色大片在线观看| 极品在线视频| 一本大道香蕉久在线播放29| 日韩最新免费不卡| 亚洲欧美综合色| 午夜久久av| 国产九九热视频| 久久99欧美| 欧美在线观看网站| 亚洲国产91精品在线观看| 精品日韩欧美一区二区| 国产精品乱码| heyzo中文字幕在线| 白白色 亚洲乱淫| 亚洲夂夂婷婷色拍ww47| 亚欧色一区w666天堂| 91色综合久久久久婷婷| 国产欧美日韩电影| 高清在线视频不卡| 男人天堂999| 国产乱码一区| 欧美亚洲另类视频| 欧美一二三四在线| 综合久久久久久| 亚洲精品水蜜桃| 亚洲国产va精品久久久不卡综合| 亚洲图片欧美激情| 在线视频国产一区| 欧美日韩国产成人高清视频| 国产白丝精品91爽爽久久| 中文字幕一区二区三区在线播放 | 亚洲色图日韩av| 久久亚洲免费| 老司机精品影院| 欧美日韩国产高清| 久久久噜噜噜久久人人看 | 水蜜桃久久夜色精品一区| 国产在线视视频有精品| 亚洲天堂a在线| 7777精品伊人久久久大香线蕉的| 日本精品视频在线观看| 亚洲小视频在线播放| 午夜视频在线免费观看| 97精品国产99久久久久久免费| 久久久久蜜桃| 大桥未久av一区二区三区中文| 欧美三区在线观看| 国产激情久久久| 国产无遮挡又黄又爽免费软件| jizzjizz在线观看| 色欧美自拍视频| 国产精品麻豆久久久| 亚洲精品有码在线| 国产a一区二区| 久久久精品在线视频| 中文字幕在线三区| 国产在线播放精品| 亚洲一区二区三区四区在线| 在线a欧美视频| 在线免费毛片| 久久神马影院| 亚洲美女一区二区三区| 日韩欧美成人一区| 成人一区二区三区四区| 中文字幕电影在线观看| 女生影院久久| 久久亚洲精品中文字幕蜜潮电影| 91丨porny丨最新| 欧美丝袜第一区| 亚洲影院在线看| 一本大道香蕉久久| 久久黄色影视| 国产蜜臀97一区二区三区| 久久精品国产亚洲| 国产xxxx振车| 久久av影院| 成人亚洲一区二区一| 亚洲成人激情在线| 亚洲一区免费看| 亚洲成人短视频| 成人av先锋影音| 久久人91精品久久久久久不卡| 国产成人精品无码播放| 麻豆精品久久| 欧美性猛交xxxx偷拍洗澡| 亚洲999一在线观看www| yiren22综合网成人| 国产欧美日韩综合一区在线播放| 欧美精品在欧美一区二区少妇| 欧洲精品码一区二区三区免费看| 天堂中文av在线资源库| 久久一区二区三区四区| 国产91在线播放九色快色| 传媒视频在线| 久久99久久99| 欧美韩日一区二区| 超碰影院在线| 精品一区二区日韩| 性色av一区二区三区在线观看| 91免费版在线观看| 蜜臀av一区二区在线观看| 国产亚洲精品成人av久久ww | 亚洲午夜一区二区三区| 亚洲精品免费在线看| 亚洲三级性片| 亚洲成色999久久网站| 在线观看av日韩|