亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#使用oledb讀取excel表格內容到datatable的方法

2020-01-24 01:53:24
字體:
來源:轉載
供稿:網友

本文實例講述了C#使用oledb讀取excel表格內容到datatable的方法。分享給大家供大家參考。具體分析如下:

首先看一段實例代碼

復制代碼 代碼如下:
string strCon = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excel_path + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1'";
OleDbConnection myConn = new OleDbConnection(strCon);
string strCom = "SELECT * FROM [Part$A7:AK] where [Part No]=10506";
myConn.Open();
OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, myConn);
DataSet myDataSet = new DataSet();
myCommand.Fill(myDataSet, "Part");
myConn.Close();

IMEX=1的作用是,當讀取Excel中每個單元格的值到DataTable中的時候,不管其在Excel單元格時候是什么數據類型,賦值到DataTable中都強制轉化為字符串類型。

在沒有IMEX=1這個屬性的時候,默認的是根據Excel中對應Column的數據類型來決定DataTable中Column的數據類型。這種情況在Excel中某一列的數據類型都是一致的情況下沒有問題,是什么類型,就會在DataTable中的對應列設置相應的類型。但是如果Excel中這一列的類型混亂的話,比如說既包括數值型又有字符串型,在運行時創建DataTable的時候,會去先判斷Excel中這一列哪種類型的數據占主體,然后給DataTable的列設置為這種類型。比如說,如果一列中既有整數型又有字符型,而整數型單元格占主體,這時DataTable中的列就是整數型。

這時又出現另外一個問題,當要把值寫入到DataTable的時候,如果該單元格符合DataTable中要求的類型,就會寫入,如果不符合的話,系統會去強制轉換。比如,如果Excel中是字符串的5,而該單元格所在的列整數型占主體,DataTable中這一列是數值型,這時,系統會把字符串的5強制轉為數值型的5然后賦給DataTable相應的地方。但是,此時,如果轉換有問題的話,比如,此列中有一單元格中是“NO5”,這時強制轉換就會有問題,系統就會給DataTable相應的地方賦值DBNull,現在如果你用DataGridView來顯示那個DataTable的時候,這個地方顯示出來就是一個空白的格,但要注意的是,并不是DataTable中的這一行這一列是null,而是DBNull.其實,我覺得,跟null的作用是一樣的,反正在DataGridView中是不會顯示出來。只是我們在寫程序如果需要對DataTable的null元素篩選的話,需要注意這個問題。

如果Excel中,某一行字符串類型占主體的話,那么DataTable中這一列就會設置為字符串型,而且任何類型都能順利轉換成字符串類型,所以,Excel的類會完整的顯示出來,不管這一列中的字符串類型的單元格,還是整數型的單元格,都能完整的顯示出來。這是一很特別的地方。但這僅僅是一個特例。

所以,如果為了處理的時候數據類型的一致性,如果Excel中數據類型混亂的話,可以使用IMEX=1使DataTable中的所有列都轉為字符型。

接下來說一個相關的問題,那就是DataTable中使用語句進行篩選的問題這時也要注意DataTable中Column的類型問題。在下邊的例子中,F1,F2,F3等都是DataTable的列名。

下邊這個例子中,F1列是數值型,F5列是字符串型

DataRow[] rows = table.Select("F1='1540' andF5='NO2'");

這時程序不會報錯,因為F1='1540',雖然篩選條件中給的是字符串類型的1540與table不符合,但是系統會自己去轉換,所以這里寫F1='1540'和F1=1540都是可以的。F5列是字符串型,F5='NO2'也沒問題。

現在我們看另外一種情況,F1列是數值型,F5列是數值型.

DataRow[] rows = table.Select("F1='1540' andF5='NO2'");

當遇到F5='NO2'后,系統會自動去轉換,此時,由于不能順利轉換成數值型,在篩選到這里的時候,就會拋出異常,Operator= can't perform on System.Double and System.String

我們再看一種情況,F1列是數值型,F5列是字符型.

DataRow[] rows = table.Select("F1=1540 andF5='NO2'");

這種情況也是沒問題的,F1=1540,因為本身F1就是數值型,所以不必給1540加引號.

但是, 我們注意一種特殊情況 ,F1列是數值型,F5列是字符型.

DataRow[] rows = table.Select("F1=1540 and F5=NO2');

這種情況下會報錯,系統不會自動把NO2轉換為字符串,而是把Grade2看成一個列了,系統做的判斷是,這一行的這兩列的單元格值相等,而DataTable中又沒有這個列名,所以就會拋出找不到這個列的異常。所以,當某一列為字符串類型時,一定要加上單引號,否則會有異常拋出。

希望本文所述對大家的C#程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久国产精品影视| 一区国产精品视频| 亚洲系列中文字幕| 成人夜晚看av| 国内免费久久久久久久久久久| 成人在线免费观看视视频| 亚洲在线免费观看| 日韩的一区二区| 国产精品福利小视频| 欧美乱妇高清无乱码| 亚洲男人天堂久| 久久国产精品偷| 国产区亚洲区欧美区| 亚洲视频欧洲视频| 久久综合九色九九| 日韩av在线免费观看| 色av中文字幕一区| 国产一区欧美二区三区| 午夜精品久久久久久久99黑人| 日韩电影在线观看中文字幕| 中文字幕最新精品| 欧美三级欧美成人高清www| 国产精品久久综合av爱欲tv| 6080yy精品一区二区三区| 日韩av黄色在线观看| 久久久久久久999精品视频| 国产精品白嫩初高中害羞小美女| 国产精品高潮在线| 亚洲第一av网| 中文字幕亚洲无线码在线一区| 福利视频导航一区| 久久久女人电视剧免费播放下载| 久久99国产精品自在自在app| 97香蕉超级碰碰久久免费的优势| 一区二区三区高清国产| 久久99精品久久久久久噜噜| 色婷婷久久一区二区| 日韩在线欧美在线| 久久久久久久亚洲精品| 日韩中文视频免费在线观看| 国产日韩在线精品av| 亚洲a在线观看| 日韩女优在线播放| 国产日韩在线观看av| 中文字幕亚洲一区在线观看| 91久久精品国产91性色| 欧美大片免费看| 欧美日韩福利在线观看| 久久久久久久久久久人体| 欧美性猛交99久久久久99按摩| 国产国产精品人在线视| 亚洲欧洲在线观看| 欧美韩国理论所午夜片917电影| 亚洲精品999| 亚洲视频在线观看网站| 亚洲精品大尺度| 欧洲s码亚洲m码精品一区| 国产在线不卡精品| 一个人看的www久久| 国产精品久久久久久久久借妻| 91情侣偷在线精品国产| 视频在线观看一区二区| 欧美大尺度电影在线观看| 成人免费在线视频网站| 欧美日韩精品二区| 久久69精品久久久久久久电影好| 欧美精品在线网站| 亚洲精品久久久久久久久久久久久| 福利一区视频在线观看| 国产精品网红福利| 日本午夜精品理论片a级appf发布| 欧美日韩免费在线| xvideos成人免费中文版| 国产精品视频1区| 欧美激情精品久久久久久变态| 5252色成人免费视频| 日韩精品久久久久久久玫瑰园| 亚洲a∨日韩av高清在线观看| 亚洲精品在线91| 日韩国产高清视频在线| 日韩av网站大全| 国产色视频一区| 欧美香蕉大胸在线视频观看| 久久久久久久国产精品视频| 亚洲精品午夜精品| 久久精品一本久久99精品| 国产成人一区二区三区电影| 中文字幕日韩在线视频| 中文字幕在线看视频国产欧美在线看完整| 欧美日本亚洲视频| 亚洲自拍偷拍在线| 亚洲美女精品久久| 九九热最新视频//这里只有精品| 国产精品一区二区3区| 久久男人av资源网站| 久久久久久久网站| 日本亚洲精品在线观看| 日韩精品极品在线观看| www国产91| 亚洲国产婷婷香蕉久久久久久| 亚洲国产私拍精品国模在线观看| 69av在线视频| 精品久久中文字幕| 亚洲一区二区三区四区视频| 欧美午夜电影在线| 欧美区在线播放| 成人免费直播live| 亚洲一区美女视频在线观看免费| 精品亚洲一区二区三区| 亚洲国产精品视频在线观看| 欧美体内谢she精2性欧美| 中文字幕亚洲一区在线观看| 亚洲第一精品夜夜躁人人躁| 九九精品视频在线观看| 久久全球大尺度高清视频| 欧美激情视频免费观看| 韩国福利视频一区| 精品久久久精品| 亚洲精品欧美日韩| 日韩在线观看网站| 国产精品高清在线| 91av视频在线播放| 欧美成人免费全部观看天天性色| 亚洲精品网站在线播放gif| 亚洲欧美中文日韩在线| 久久国产精品首页| 欧美一区二区三区……| 91豆花精品一区| 久久综合国产精品台湾中文娱乐网| 日本高清不卡在线| 在线成人激情视频| 欧美成人免费在线观看| 亚洲色图五月天| 97av视频在线| 精品偷拍一区二区三区在线看| 久久影院免费观看| 欧美日韩亚洲视频一区| 色婷婷**av毛片一区| 国产精品观看在线亚洲人成网| 亚洲激情在线视频| 国产精品久久久久免费a∨| 91免费综合在线| 操人视频在线观看欧美| 91天堂在线观看| 亚洲成av人乱码色午夜| 国产成人涩涩涩视频在线观看| 成人在线播放av| 国产脚交av在线一区二区| 国产精品video| 日韩在线播放视频| 影音先锋欧美精品| 欧美高清在线视频观看不卡| 日本欧美一级片| 91社区国产高清| 国产精品入口日韩视频大尺度| 成人黄色av免费在线观看| 国产精品久久99久久| 国产综合香蕉五月婷在线| 日韩在线观看网站| 懂色av影视一区二区三区| 91在线中文字幕| 亚洲国产精品悠悠久久琪琪| 久久久在线免费观看| 国产精品国产三级国产专播精品人|