Visual C 的Excel程式設計

2021-04-13 12:22:28 字數 3996 閱讀 7431

excel是微軟公司辦公自動化套件中的乙個軟體,他主要是用來處理電子**。excel以其功能強大,介面友好等受到了許多使用者的歡迎。在辦公的時候,正是由於excel的這麼多的優點,許多重要的資料,往往以excel電子**的形式儲存起來。這樣就給程式設計師帶來了乙個問題,雖然excel功能比較強大,但畢竟不是資料庫,在程式中處理資料庫中的資料比其處理excel**中的資料容易許多。那麼如何用visual c#讀取excel**中的資料?在以前用delphi程式設計的時候,對於不同的使用者,他們對於列印的需求是不一樣的,如果要使得程式中的列印功能適用於每乙個使用者,可以想象程式設計是十分複雜的。這時想到excel,由於excel**的功能強大,又由於幾乎每一台機器都安裝了它,如果把程式處理的結果放到excel**中,這樣每乙個使用者就可以根據自己的需要在excel中定製自己的列印。這樣不僅使得程式設計簡單,而且又滿足了諸多使用者的要求,更加實用了。那麼用visual c#如何呼叫excel,如何又把資料存放到excel**中?本文就來**一下上述問題的解決辦法。

一.程式設計及執行環境

(1).微軟視窗2000 伺服器版

(2)..net framework sdk beta 2

(3).microsoft data access component 2.6以上版本(mdac2.6)

(4).office 2000套件

二.visual c#讀取excel**中的資料:

本節將通過乙個程式來介紹visual c#讀取excel**中的資料,並把資料以datagrid的形式顯示出來。

(1).如何讀取資料:

其實讀取excel**中的資料和讀取資料庫中的資料是非常類似的,因為在某種程度上excel**可以看成是一張一張的資料表。其二者的主要區別在於所使用的資料引擎不一樣。在本文的程式中,通過下列**實現讀取excel**資料,具體如下:

//建立乙個資料鏈結

string strcon = " provider = microsoft.jet.oledb.4.0 ; data source = c:/sample.xls;extended properties=excel 8.0" ;

oledbconnection myconn = new oledbconnection ( strcon ) ;

string strcom = " select * from [sheet1$] " ;

myconn.open ( ) ;

file://開啟資料鏈結,得到乙個資料集

oledbdataadapter mycommand = new oledbdataadapter ( strcom , myconn ) ;

file://建立乙個 dataset物件

mydataset = new dataset ( ) ;

file://得到自己的dataset物件

mycommand.fill ( mydataset , "[sheet1$]" ) ;

file://關閉此資料鏈結

myconn.close ( ) ;

怎麼樣讀取excel**中的資料其實和讀取資料庫中的資料沒有什麼實質上的區別。

注釋:這裡讀取的是c盤根目錄下的"sample.xls"檔案。

(2).用datagrid來顯示得到的資料集:

在得到dataset物件後,只需要通過下列二行**,就可以把資料集用datagrid顯示出來了:

datagrid1.datamember= "[sheet1$]" ;

datagrid1.datasource = mydataset ;

(3).用visual c#讀取excel**,並用datagrid顯示出來的程式**(read.cs)和程式執行的介面:

掌握了上面二點,水到渠成就可以得到以下**:

using system ;

using system.drawing ;

using system.collections ;

using system.componentmodel ;

using system.windows.forms ;

using system.data ;

using system.data.oledb ;

public class form1 : form

file://清除程式中使用過的資源

protected override void dispose ( bool disposing ) }

base.dispose ( disposing ) ;

} private void getconnect ( )

private void initializecomponent ( )

private void button1_click ( object sender , system.eventargs e )

file://清除程式中使用的各個資源

protected override void dispose ( bool disposing ) }

base.dispose( disposing ) ;

} private void initializecomponent ( )

{ button1 = new button ( ) ;

suspendlayout ( ) ;

button1.location = new system.drawing.point ( 32 , 72 ) ;

button1.name = "button1" ;

button1.size = new system.drawing.size ( 100 , 30 ) ;

button1.tabindex = 0 ;

button1.text = "呼叫excel檔案!" ;

button1.click += new system.eventhandler ( button1_click ) ;

autoscalebasesize = new system.drawing.size ( 5 , 13 ) ;

this.clientsize = new system.drawing.size ( 292 , 273 ) ;

this.controls.add ( button1 ) ;

this.name = "form1" ;

this.text = "如何用visual c#呼叫excel**!" ;

this.resumelayout ( false ) ;

(5).編譯源程式和程式執行介面:

在經過了下列命令編譯後:

csc.exe /r:system.dll /r:system.windows.forms.dll /r:system.drawing.dll /r:excel.dll /r:office.dll /r:vbide.dll excel.cs

就可以得到"excel.exe",執行後介面如下:

圖02:visual c#呼叫excel**,並儲存資料的程式執行介面

四.visual c#處理office套件中的其他成員程式:

本文雖然只介紹了visual c#在處理excel**中經常遇到的一些問題的解決方法,但其實對office套件的其他成員也有很強的借鑑意義,譬如visual c#來處理word文件,在呼叫word文件的時候,必須先完成com元件從非受管**到受管**的轉換,word的com元件位"msword9.olb",經過轉換後也會產生三個dll檔案,但分別是"word.dll"、"office.dll"、"vbide.dll"。其實在visual c#中呼叫word,也非常容易。只需要把呼叫excel**中的**換成呼叫word的**就可以了,具體如下:

不信你試一下,看看是否達到你的要求。對於針對word的其他的操作,總體來說和對excel**的操作相類似。由於針對word只是乙個文件,程式對word進行的操作是比較少的,所以就不一一介紹了。

五.總結:

Visual C 的選單程式設計

選單是軟體介面設計的乙個重要組成方面。它描述著乙個軟體的大致功能和風格。所以在程式設計中處理好 設計好選單,對於乙個軟體開發是否成功有著比較重要的意義。visual c 是.net框架中的乙個重要組成部分,也是微軟公司推出的下一代主流程式開發語言。它在設計 開發程式介面的時候和以前的某些程式開發語言...

Visual C 的SQL Server程式設計

visual c 的sql server程式設計 初始設定 首先,我們需在應用系統中安裝sql server 2000,microsoft ole db provider for sql server sql ole db 也會同時被自動安裝,接著用sql server的enterprise man...

Visual C 的SQL Server程式設計

visual studio.net的中文beta 2版本推出已有一段時日了,相比早期的beta 1版本,新版本各方面都有很大的變化,其中包括sql server程式設計方面,在中文beta 2中,資料庫的訪問普遍改用了ole db的方式。由於資料庫程式設計是企業級應用開發的核心,本文將舉例闡述中文b...