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

下載本文檔

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

文檔簡介

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

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

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

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

5、賦值輸出。例如,向Excel文件“ temp.xls”的Sheet1工作表 A1 單元格輸出“ 111”, B1 單元格輸出“ 222”的代碼為:Excel.Application app = new Excel.Application ();/創(chuàng)建 Excel對象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);/打開工作薄文件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 對象wb = null;wbs = null;app = null;GC.Collect(); /垃圾收集2.2.2 使用 ADO.NET 直接向 Excel 輸出逐單元格賦值輸出的方法只適用于少量數(shù)據(jù)傳輸, 如果傳輸?shù)臄?shù) 據(jù)量非常大,則會出現(xiàn)系統(tǒng)假死機現(xiàn)象。因此,

8、在向 Excel 輸出大數(shù) 據(jù)量,且單元格排列也很規(guī)律的情況下可以利用 ADO.NET 技術(shù)直接 訪問Excel文件的方法輸出數(shù)據(jù)。例如,向Excel文件“temp.xls”的 Sheetl工作表A2和B2單元格分別輸出“張三”和“ 27”,A3和B3 單元格分別輸出“李四”和“ 30”的代碼為:/設(shè)置連接 Excel 文件的字符串,并打開連接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) 打開“ temp.xls ”文件,在Sheetl表的A1單元格中輸入

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

12、所以只能在安裝了 Internet Explorer 的系統(tǒng)上使用。該控 件最大的特點是, 在其內(nèi)不僅可以顯示網(wǎng)頁內(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)操作那樣,對其數(shù)據(jù)進行編輯更新。通過WebBrowser控件的ShowSaveAsDialog方法還可以另存嵌入其內(nèi)的文件,具體語句為:webBrowser1.ShowSaveAsDialog();3 結(jié)語在基于C#語言的winform程序中,使用 WebBrowser控件將Excel 嵌入到窗體內(nèi), 在同一個系統(tǒng)界面中實現(xiàn)復(fù)雜表格顯示和控制的方法 非常實用。但如果用戶計算機內(nèi)安裝的是 Office 2007 ,則會影響 Excel 文件在WebBrowser中的嵌入顯示。所以在針對Office 2007開發(fā)的應(yīng) 用程序,筆者不建議使用本文的方法顯示表格數(shù)據(jù)。參考文獻:1 如何使用 Vi

溫馨提示

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

評論

0/150

提交評論