C#winform中嵌入Ecel實(shí)現(xiàn)復(fù)雜表格的顯示和控制_第1頁(yè)
C#winform中嵌入Ecel實(shí)現(xiàn)復(fù)雜表格的顯示和控制_第2頁(yè)
C#winform中嵌入Ecel實(shí)現(xiàn)復(fù)雜表格的顯示和控制_第3頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、摘要:闡述了在 C#winform 程序中,使用 WebBrowser 控件將 Excel 嵌入到窗體內(nèi),以實(shí)現(xiàn)復(fù)雜表格顯示和控制的具體方法。關(guān)鍵詞:Excel; C#; WebBrowser;復(fù)雜表格顯示0 引言在開(kāi)發(fā)基于報(bào)表的管理信息系統(tǒng)時(shí), 用戶(hù)可能會(huì)明確要求在窗體 上顯示他們自己設(shè)計(jì)的表格, 而這些表格中大多包含有樣式非常復(fù)雜 的表格。此時(shí),想利用 C#中自帶的表格控件實(shí)現(xiàn)需求幾乎是不可能 的。 Excel 是大眾熟悉的電子表格處理軟件,其報(bào)表處理能力和數(shù)據(jù) 表現(xiàn)能力都非常強(qiáng)大, 用其制作樣式復(fù)雜的表格是一件非常簡(jiǎn)單的事 情。如果能將Excel文件嵌入到C#語(yǔ)言開(kāi)發(fā)的winform程序

2、中,就可 以非常容易地解決在窗體上顯示復(fù)雜表格的需求, 又能夠?qū)崿F(xiàn)讓用戶(hù) 便捷地編輯數(shù)據(jù)和導(dǎo)出 Excel 文件等功能。1實(shí)現(xiàn)思路雖然 Excel 可以制作樣式復(fù)雜的表格,但是軟件系統(tǒng)的數(shù)據(jù)都被 存放在數(shù)據(jù)庫(kù)內(nèi),因此必須編寫(xiě)代碼將數(shù)據(jù)庫(kù)文件內(nèi)的數(shù)據(jù)輸出到 Excel 文件內(nèi),再將該 Excel 文件內(nèi)容顯示到窗體上就可以滿足用戶(hù) 需求。具體實(shí)現(xiàn)思路如下:按照用戶(hù)設(shè)計(jì)的表格樣式,用Excel制作表格模板文件;為了不破壞模板文件,在使用文件之前,通過(guò)代 碼復(fù)制模板文件,以后的所有操作都在新文件上執(zhí)行;編寫(xiě)C#程序,通過(guò) ADO.NET 技術(shù)從數(shù)據(jù)庫(kù)內(nèi)提取數(shù)據(jù),向 Excel 文件的指定單元格輸出數(shù)

3、據(jù)并保存文件;將 Excel文件嵌入到窗體中,供用戶(hù) 瀏覽修改,并可以保存修改后的內(nèi)容。2C#中控制Excel文件的方法2.1引用Excel類(lèi)型庫(kù)在C#中控制Excel文件的前提是添加Excel的引用。根據(jù)計(jì)算機(jī) 上安裝的 Excel 軟件版本的不同,組件名稱(chēng)和類(lèi)型庫(kù)的版本也不一樣, 此處Excel的版本為2003版本,因此COM組件名稱(chēng)為 Microsoft Excel 11.0 Object Library。引用Excel類(lèi)型庫(kù)的具體操作方法為:在解決 方案資源管理器中,右擊“引用”菜單項(xiàng),選擇“添加引用”;在“添加引用”對(duì)話框中,選擇“ COM ”選項(xiàng)卡,并從列表框內(nèi)選擇 Microso

4、ft Excel 11.0 Object Library ;單擊“確定”按鈕,關(guān)閉“添 加引用”對(duì)話框。2.2編程控制 Excel引用Excel類(lèi)型庫(kù)后,程序中就可以使用 Excel相關(guān)的類(lèi)和接口 來(lái)控制 Excel 文件。常用到的 Excel 相關(guān)類(lèi)和接口有 Application (應(yīng) 用)、Workbook (工作薄)和 Worksheet (工作表)等。2.2.1 逐單元格賦值輸出 向樣式復(fù)雜的 Excel 表格輸出數(shù)據(jù)時(shí),由于單元格的合并拆分等 原因,加上需要向其賦值輸出的單元格排列沒(méi)有任何規(guī)律, 所以通常 都會(huì)用到逐個(gè)單元格賦值輸出的方法, 即在程序中一個(gè)一個(gè)定位單元 格,然后對(duì)其

5、賦值輸出。例如,向Excel文件“ temp.xls”的Sheet1工作表 A1 單元格輸出“ 111”, B1 單元格輸出“ 222”的代碼為:Excel.Application app = new Excel.Application ();/創(chuàng)建 Excel對(duì)象Excel.Workbooks wbs = app.Workbooks; /創(chuàng)建 Excel 工作薄 string FileName = Application.StartupPath + " temp.xls "; Excel.Workbook wb = wbs.Open( FileName, Type.Mis

6、sing,Type.Missing,Type.Missing , Type.Missing, Type.Missing ,Type.Missing ,Excel.XlPlatform.xlWindows ,Type.Missing ,Type.Missing,Type.Missing , Type.Missing, Type.Missing ,Type.Missing,Type.Missing);/打開(kāi)工作薄文件Excel.Worksheet s =( Excel.Worksheet)wb.Worksheets"sheet1";引用Sheetl工作表s.Cells1,1 =

7、 "111" ; /向 A1 單元格輸出數(shù)據(jù)s.Cells1,2 = "222" ; /向 B1 單元格輸出數(shù)據(jù)wb.Save (); 保存工作薄wb.Close (false, Type.Missing, Type.Missing); 關(guān)閉工作薄 app.Quit(); /結(jié)束 Excel 對(duì)象wb = null;wbs = null;app = null;GC.Collect(); /垃圾收集2.2.2 使用 ADO.NET 直接向 Excel 輸出逐單元格賦值輸出的方法只適用于少量數(shù)據(jù)傳輸, 如果傳輸?shù)臄?shù) 據(jù)量非常大,則會(huì)出現(xiàn)系統(tǒng)假死機(jī)現(xiàn)象。因此,

8、在向 Excel 輸出大數(shù) 據(jù)量,且單元格排列也很規(guī)律的情況下可以利用 ADO.NET 技術(shù)直接 訪問(wèn)Excel文件的方法輸出數(shù)據(jù)。例如,向Excel文件“temp.xls”的 Sheetl工作表A2和B2單元格分別輸出“張三”和“ 27”,A3和B3 單元格分別輸出“李四”和“ 30”的代碼為:/設(shè)置連接 Excel 文件的字符串,并打開(kāi)連接OleDbConnection objConn = new OleDbConnection ( "Provider=Microsoft.Jet.OLEDB.4.0 ; Data Source=" + Application.Start

9、upPath +"temp.xls;Extended Properties=Excel 8.0;"); objConn.Open();/將數(shù)據(jù)作為兩條記錄插入Excel文件中MyTable的“name"和 “ age”兩列OleDbCommand objCmd = new OleDbCommand(); objCmd.Connection = objConn;objCmd.CommandText = "Insert into MyTable(name, age)" + " values ('張三','27

10、9;)";objCmd.ExecuteNonQuery();objCmd.CommandText = "Insert into MyTable(name, age)" +" values ('李四 ', '30')";objCmd.ExecuteNonQuery();/ 關(guān)閉連接objConn.Close();在上面的代碼中出現(xiàn)了“ MyTable” “nam$和“age”等,這些 都需要提前在 Excel 文件中設(shè)置,具體設(shè)置方法如下:(1) 打開(kāi)“ temp.xls ”文件,在Sheetl表的A1單元格中輸入

11、 name,在B1單元格中輸入aga這一步是在設(shè)置列名。(2) 先選中A1 : B1,然后選擇“插入” | “名稱(chēng)” | “定義”菜 單項(xiàng)。(3) 在“定義名稱(chēng)”對(duì)話框中輸入名稱(chēng) MyTable,然后單擊“確 定”按鈕。這一步是在設(shè)置表名。(4) 保存并退出“ temp.xls ”文件。至此,“temp.xls ”文件的設(shè)置已經(jīng)全部設(shè)置好,運(yùn)行上面的程 序后,該文件 S h e et 1表中就會(huì)多出兩行記錄,運(yùn)行結(jié)果如圖 1 所示。2.3使用 WebBrowser顯示、編輯和另存 Excel文件WebBrowser是C#中的一種瀏覽器控件,它是 In ternet Explorer 的一部分,

12、所以只能在安裝了 Internet Explorer 的系統(tǒng)上使用。該控 件最大的特點(diǎn)是, 在其內(nèi)不僅可以顯示網(wǎng)頁(yè)內(nèi)容, 也可以顯示 Word、 Excel、 PowerPoint 和 pdf 等格式的文件內(nèi)容。例如,下面的代碼將“ temp.xls”文件內(nèi)容顯示到 WebBrowser控件。string str = Application.StartupPath + " temp.xls "; webBrowser1.Navigate(str);當(dāng) Excel 文件被嵌入到 WebBrowser 控件后,就可以像在 Excel 軟件內(nèi)操作那樣,對(duì)其數(shù)據(jù)進(jìn)行編輯更新。通過(guò)WebBrowser控件的ShowSaveAsDialog方法還可以另存嵌入其內(nèi)的文件,具體語(yǔ)句為:webBrowser1.ShowSaveAsDialog();3 結(jié)語(yǔ)在基于C#語(yǔ)言的winform程序中,使用 WebBrowser控件將Excel 嵌入到窗體內(nèi), 在同一個(gè)系統(tǒng)界面中實(shí)現(xiàn)復(fù)雜表格顯示和控制的方法 非常實(shí)用。但如果用戶(hù)計(jì)算機(jī)內(nèi)安裝的是 Office 2007 ,則會(huì)影響 Excel 文件在WebBrowser中的嵌入顯示。所以在針對(duì)Office 2007開(kāi)發(fā)的應(yīng) 用程序,筆者不建議使用本文的方法顯示表格數(shù)據(jù)。參考文獻(xiàn):1 如何使用 Vi

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論