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...