1. 程式人生 > >用ole讀取excel時的引數解釋

用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 
=new OleDbConnection(strConn);
           
// OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [出車登記表$A:K]", strConn);            OleDbDataAdapter myCommand =new OleDbDataAdapter("SELECT * FROM [出車登記表$A:L]  where f3<>''", strConn);
            DataSet myDataSet 
=new DataSet();
            
try
            {
                myCommand.Fill(myDataSet);
            }
            
catch (Exception ex)
            {
                MessageBox.Show(
"error,"+ ex.Message);
            }
            
return myDataSet;
        }
複製程式碼

呼叫的時候傳入引數為excel檔案的路徑,返回值是一個dataset。

2.程式碼注意事項

2.1這一句“ strConn =

"Provider=Microsoft.Jet.OLEDB.4.0;"+"Data Source="+ FilePath +";Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
”。

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