C#使用oledb導出數(shù)據(jù)到excel的方法
本文實例講述了C#使用oledb導出數(shù)據(jù)到excel的方法。分享給大家供大家參考,具體如下:
現(xiàn)在做應(yīng)用的一半都會碰到數(shù)據(jù)導出的問題,導出到word阿,導出到excel啊,還有其他的什么。當然導出的類型中還是以ms office的居多。最近在做數(shù)據(jù)的轉(zhuǎn)換,也碰到這個導出的問題,當然幸運的是不用碰word,這樣涉及到就只有xml,csv,tsv和最“痛苦”的excel了。
最開始的想法是xml+xslt,搞定全部,但是有一個問題就是excel只有在xp版本之后支持xml,我不能強制的要求用戶都把他們的office升級到xp以后,畢竟人家用的是正版。所以對于這個,還有一個方法,也是網(wǎng)上用的比較多的一種——寫成html然后改后綴名為xls,或者將響應(yīng)頭里的類型改為Application/Excel(好像是這樣,記不清了,我主要這樣導過word)。當然這樣有些不爽,因為給出的畢竟不是真正的excel,不過還是可以用xslt來做的。
不過在準備這樣做的時候,發(fā)現(xiàn)了一種可以產(chǎn)生至少比html方式更正宗一些的.xls方式,那就是用oledb方式。最先看到的是用oledb方式查excel的數(shù)據(jù),然后就在想既然可以select,那么insert自然也應(yīng)該可以的。但是試了一下,不行,老是說沒有制定的字段。好來又找了一些資料發(fā)現(xiàn),字段其實也是作為一行數(shù)據(jù)的,這樣問題就可以解決了,下面是我的試驗代碼:
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)會自己建一個,但是這是后的文件是不能正常打開的,要create一個表(如果可以稱為表的話),類型可以指定這沒有問題??赡苡X得奇怪,為什么分為兩句,這其是因為,合為一個commad的命令字符串的時候,我還不知道用哪個字符來區(qū)分,“;”是不行的,這個我還要在msdn上找一下,我是在.net 1.1下測試過的,可以用,就是會多出一行表示字段名的數(shù)據(jù),但是這個應(yīng)該可以用delete刪掉的。.net 2.0下應(yīng)該也是可以的,畢竟這是底層提供一個數(shù)據(jù)訪問接口,與你的編程環(huán)境應(yīng)該沒有太大的關(guān)系。對于那個“Excel 8.0”,我只是確定可以,對于更高的沒有試過,準備再看一下。
更多關(guān)于C#相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《C#中XML文件操作技巧匯總》、《C#常見控件用法教程》、《WinForm控件用法總結(jié)》、《C#數(shù)據(jù)結(jié)構(gòu)與算法教程》、《C#面向?qū)ο蟪绦蛟O(shè)計入門教程》及《C#程序設(shè)計之線程使用技巧總結(jié)》
希望本文所述對大家C#程序設(shè)計有所幫助。
上一篇:C#實現(xiàn)XML與實體類之間相互轉(zhuǎn)換的方法(序列化與反序列化)
欄 目:C#教程
本文標題:C#使用oledb導出數(shù)據(jù)到excel的方法
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/6445.html
您可能感興趣的文章
- 01-10C#使用Dispose模式實現(xiàn)手動對資源的釋放
- 01-10C#3.0使用EventLog類寫Windows事件日志的方法
- 01-10C#使用windows服務(wù)開啟應(yīng)用程序的方法
- 01-10c# ArrayList的使用方法小總結(jié)
- 01-10C#使用ADO.Net部件來訪問Access數(shù)據(jù)庫的方法
- 01-10C#使用Mutex簡單實現(xiàn)程序單實例運行的方法
- 01-10使用Nopcommerce為商城添加滿XX減XX優(yōu)惠券功能
- 01-10C#導出網(wǎng)站功能實例代碼講解
- 01-10C#中yield用法使用說明
- 01-10C#編程和Visual Studio使用技巧(下)


閱讀排行
本欄相關(guān)
- 01-10C#通過反射獲取當前工程中所有窗體并
- 01-10關(guān)于ASP網(wǎng)頁無法打開的解決方案
- 01-10WinForm限制窗體不能移到屏幕外的方法
- 01-10WinForm繪制圓角的方法
- 01-10C#實現(xiàn)txt定位指定行完整實例
- 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
- 01-10C#停止線程的方法
- 01-10C#實現(xiàn)清空回收站的方法
- 01-10C#通過重寫Panel改變邊框顏色與寬度的
- 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
隨機閱讀
- 01-10C#中split用法實例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法


