如果表格裡某列全是數字或是字符沒問題,但如果混合了全是數字和部分字符就會有部分讀取為空連接EXCEL方式如下
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=" + _physicalPath +";Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
先是直接FILL到DATASET裡,以為是數據類型不正確,再建了一個臨時的datatable,導進去還是空值,網絡上搜了下,全是一樣的問題解決不了
string strConn ="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + _physicalPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";
後來經過網絡查詢相關資料,總算明白原因。小弟整理如下,供大家參考。
1。excel的連接字串中的擴展屬性必須包含IMEX=1;
2.修改注冊表中的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows的值為0。TypeGuessRows的系統默認值為8,表示系統從文件中的前8行數據中采樣取得數據類型。如果前8行中含有數字類型又有文本類型,采樣的數據類型為數目多的類型。例如前8行中有5行數字,3行文本,則返回5行數字,3行為空。如果4行數字,4行文本,則返回4行數字類型,4行為空。8行以後的數據類型若和采樣類型一樣,則返回真實數據,否則返回空。