C# EXCEL導入 混合列文字爲空,找不到可安裝的 ISAM的解決辦法

C# EXCEL導入 混合列文字爲空,找不到可安裝的 ISAM的解決辦法 
使用C#導入 Excel數據到 DataTable,若是鏈接串中只寫 Excel 8.0,則正常的字符列,數值列都沒有問題,但對於既有數字也有字符的混合列,則讀出爲空。 
  後來從網上查到加入IMEX=1 就可將混合型轉換爲文本,就是鏈接串爲Excel 8.0;IMEX=1,但這有出現 「找不到可安裝的 ISAM」。 
  後來在其兩邊加上單引號' 就可解決。也就是 'Excel 8.0;IMEX=1' 
  EXCEL 默認若前8行都沒有出現文本,那麼就認爲這一列的全部值都是數字,能夠在註冊表下面語句處修改成默認值,好比500,但儘可能將字符行向前。 
  HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel 
最後完整的函數以下: 
public static System.Data.DataTable CallExcel(string FilePath, string sheetName) 

OleDbConnection con = new OleDbConnection('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + FilePath + ';Extended Properties='Excel 8.0;HDR=YES;IMEX=1''); 
con.Open(); 
string sql = 'select * from [' + sheetName + '$]';//[Sheet1$]';////選擇第一個數據SHEET 
//OleDbCommand command = new OleDbCommand(sql, con); 
//OleDbDataReader reader = command.ExecuteReader(); 
//if (reader.Read()) 
//{ 
// reader[0].ToString();//直接讀出數據 
//} 
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, con); 
System.Data.DataTable dt = new System.Data.DataTable(); 
adapter.Fill(dt); 
//reader.Close(); 
//command.Dispose(); 
con.Close(); 
con.Dispose(); 
return dt; 
}sql

相關文章
相關標籤/搜索