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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

5、賦值輸出。例如,向Excel文件“ temp.xls”的Sheet1工作表 A1 單元格輸出“ 111”, B1 單元格輸出“ 222”的代碼為:Excel.Application app = new Excel.Application ();/創建 Excel對象Excel.Workbooks wbs = app.Workbooks; /創建 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 單元格輸出數據s.Cells1,2 = "222" ; /向 B1 單元格輸出數據wb.Save (); 保存工作薄wb.Close (false, Type.Missing, Type.Missing); 關閉工作薄 app.Quit(); /結束 Excel 對象wb = null;wbs = null;app = null;GC.Collect(); /垃圾收集2.2.2 使用 ADO.NET 直接向 Excel 輸出逐單元格賦值輸出的方法只適用于少量數據傳輸, 如果傳輸的數 據量非常大,則會出現系統假死機現象。因此,

8、在向 Excel 輸出大數 據量,且單元格排列也很規律的情況下可以利用 ADO.NET 技術直接 訪問Excel文件的方法輸出數據。例如,向Excel文件“temp.xls”的 Sheetl工作表A2和B2單元格分別輸出“張三”和“ 27”,A3和B3 單元格分別輸出“李四”和“ 30”的代碼為:/設置連接 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();/將數據作為兩條記錄插入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();/ 關閉連接objConn.Close();在上面的代碼中出現了“ MyTable” “nam$和“age”等,這些 都需要提前在 Excel 文件中設置,具體設置方法如下:(1) 打開“ temp.xls ”文件,在Sheetl表的A1單元格中輸入

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

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

溫馨提示

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

評論

0/150

提交評論