C#使用oledb導(dǎo)出數(shù)據(jù)到excel的方法
本文實(shí)例講述了C#使用oledb導(dǎo)出數(shù)據(jù)到excel的方法。分享給大家供大家參考,具體如下:
現(xiàn)在做應(yīng)用的一半都會碰到數(shù)據(jù)導(dǎo)出的問題,導(dǎo)出到word阿,導(dǎo)出到excel啊,還有其他的什么。當(dāng)然導(dǎo)出的類型中還是以ms office的居多。最近在做數(shù)據(jù)的轉(zhuǎn)換,也碰到這個(gè)導(dǎo)出的問題,當(dāng)然幸運(yùn)的是不用碰word,這樣涉及到就只有xml,csv,tsv和最“痛苦”的excel了。
最開始的想法是xml+xslt,搞定全部,但是有一個(gè)問題就是excel只有在xp版本之后支持xml,我不能強(qiáng)制的要求用戶都把他們的office升級到xp以后,畢竟人家用的是正版。所以對于這個(gè),還有一個(gè)方法,也是網(wǎng)上用的比較多的一種——寫成html然后改后綴名為xls,或者將響應(yīng)頭里的類型改為Application/Excel(好像是這樣,記不清了,我主要這樣導(dǎo)過word)。當(dāng)然這樣有些不爽,因?yàn)榻o出的畢竟不是真正的excel,不過還是可以用xslt來做的。
不過在準(zhǔn)備這樣做的時(shí)候,發(fā)現(xiàn)了一種可以產(chǎn)生至少比html方式更正宗一些的.xls方式,那就是用oledb方式。最先看到的是用oledb方式查excel的數(shù)據(jù),然后就在想既然可以select,那么insert自然也應(yīng)該可以的。但是試了一下,不行,老是說沒有制定的字段。好來又找了一些資料發(fā)現(xiàn),字段其實(shí)也是作為一行數(shù)據(jù)的,這樣問題就可以解決了,下面是我的試驗(yàn)代碼:
string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = c:\\2.xls;Extended Properties=Excel 8.0" ; OleDbConnection myConn = new OleDbConnection ( strCon ) ; string createcmd="CREATE TABLE testtable ( ID INTEGER, UserID INTEGER)"; string insertcmd = " INSERT INTO testtable (ID,UserID) VALUES (1,2) " ; OleDbCommand cmd=new OleDbCommand(createcmd,myConn); OleDbCommand excmd=new OleDbCommand(insertcmd,myConn); myConn.Open ( ) ; cmd.ExecuteNonQuery(); excmd.ExecuteNonQuery(); myConn.Close ( ) ;
這樣就可以了,在連接字符串里的“c:\\2.xls”,如果不存在的話系統(tǒng)會自己建一個(gè),但是這是后的文件是不能正常打開的,要create一個(gè)表(如果可以稱為表的話),類型可以指定這沒有問題??赡苡X得奇怪,為什么分為兩句,這其是因?yàn)?,合為一個(gè)commad的命令字符串的時(shí)候,我還不知道用哪個(gè)字符來區(qū)分,“;”是不行的,這個(gè)我還要在msdn上找一下,我是在.net 1.1下測試過的,可以用,就是會多出一行表示字段名的數(shù)據(jù),但是這個(gè)應(yīng)該可以用delete刪掉的。.net 2.0下應(yīng)該也是可以的,畢竟這是底層提供一個(gè)數(shù)據(jù)訪問接口,與你的編程環(huán)境應(yīng)該沒有太大的關(guān)系。對于那個(gè)“Excel 8.0”,我只是確定可以,對于更高的沒有試過,準(zhǔn)備再看一下。
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》及《C#程序設(shè)計(jì)之線程使用技巧總結(jié)》
希望本文所述對大家C#程序設(shè)計(jì)有所幫助。
相關(guān)文章
描述C#多線程中l(wèi)ock關(guān)鍵字的使用分析
本篇文章是對C#多線程中l(wèi)ock關(guān)鍵字的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06
C#實(shí)現(xiàn)自定義動畫鼠標(biāo)的示例詳解
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)自定義動畫鼠標(biāo)效果,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下2022-12-12
C# 類型轉(zhuǎn)換(隱式類型,顯式類型,自定義類型)
本文詳細(xì)介紹了C#中的類型轉(zhuǎn)換,包括隱式類型轉(zhuǎn)換和顯式類型轉(zhuǎn)換(強(qiáng)制類型轉(zhuǎn)換),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
c#只讀字段和常量的區(qū)別,以及靜態(tài)構(gòu)造函數(shù)的使用實(shí)例
這篇文章主要介紹了c#只讀字段和常量的區(qū)別,以及靜態(tài)構(gòu)造函數(shù)的使用實(shí)例,有需要的朋友可以參考一下2013-12-12
C#?PaddleOCRSharp?OCR進(jìn)行疲勞測試
PaddleOCRSharp?是百度飛槳封裝的.NET版本?OCR?dll?類庫,OCR可以將圖像文件中的文本內(nèi)容進(jìn)行識別,下面我們就來看看如何通過它們實(shí)現(xiàn)疲勞測試吧2024-11-11
Unity實(shí)現(xiàn)3D循環(huán)滾動效果
這篇文章主要為大家詳細(xì)介紹了Unity實(shí)現(xiàn)3D循環(huán)滾動效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02

