用ole讀取excel時的引數解釋
c#讀取excel的方法有不少,這裡重點講直接將excel檔案讀取到dataset中。在實踐過程中會有不少問題,特意摘抄在此:
1.基本的程式碼
private DataSet importExcelToDataSet(string FilePath){
string strConn;
strConn ="Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+ FilePath +";Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
OleDbConnection conn
// OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [出車登記表$A:K]", strConn); OleDbDataAdapter myCommand =new OleDbDataAdapter("SELECT * FROM [出車登記表$A:L] where f3<>''", strConn);
DataSet myDataSet =new DataSet();
{
myCommand.Fill(myDataSet);
}
catch (Exception ex)
{
MessageBox.Show("error,"+ ex.Message);
}
return myDataSet;
}
呼叫的時候傳入引數為excel檔案的路徑,返回值是一個dataset。
2.程式碼注意事項
2.1這一句“ strConn =
”。
2.1.1:Extended Properties後面的值,excel的版本:excel2003/07都要指定為8.0
2.1.2:HDR=No;表示是否將excle中的第一行也作為資料讀取到dataset中
2.1.3:IMEX=1 表示將某列中既有數值又有文字的統一認為是文字處理,此語句可解決某些單元格內容讀取到excel中是空白的問題。
2.2這一句“ OleDbDataAdapter myCommand =new OleDbDataAdapter("SELECT * FROM [出車登記表$A:L] where f3<>''", strConn);
”
2.2.1:SELECT * FROM 誰都知道是幹什麼的,後面跟上"[]",裡面寫要讀取的工作表的名字,以美元符號結束,如“工作表1$”這樣。
2.2.2:如果要讀取指定範圍內的列,則在工作表名字以及美元符號後寫上起始列編號+冒號+截止列編號,如“[工作表1$C:K]”。此語句可解決讀取過程中出現“包含了太多列”的異常。
2.2.3如果某些單元格內容為空就不讀取此行則增加where條件,假設工作表中的A列中某一個單元格內容為空不讀取則寫“ WHERE f1<>''”,如果是b列則是f2<>''依此類推。此語句可解決讀取完成的datast中包含n多無意義的空行。其他情況需要自行發現了。
轉載自:http://www.cnblogs.com/phcis/archive/2010/11/19/1881769.html