1. 程式人生 > >運用C#讀取匯入的Excel部分資料為空的解決方法

運用C#讀取匯入的Excel部分資料為空的解決方法

最近自己在開發一個測試管理工具,其中需要實現Excel的匯入功能,但程式在匯入Excel時,部分資料丟失了,程式沒有報任何異常,這就怪了!
於是在網上搜索其他人是否遇到類似的問題,發現該問題比較常見,解決的方法也較多,最終自己也順利的解決了該問題。
問題原因:Excel中的部分資料列的格式是數值型別,部分是文字型別。當用OleBb讀取Excel時,在Extended Properties中,如果沒有配置IMEX=1的屬性,微軟的處理機制是將列轉換為同一型別來讀取的.例如在第一行使用的是文字格式,而第二行使用的是數值格式,就會出現數值列的值讀取出來為空。
問題的原因定位到了,其實解決方法也很簡單,只需將屬性增加配置”IMEX=1”即可。
程式碼如下:

string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +     AimFile + ";Extended Properties='Excel 8.0;IMEX=1';";
OleDbConnection conn = new OleDbConnection(strConn);
//讀取工作區“Sheet1”中的資料
OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
DataSet myDataSet = new
DataSet(); myCommand.Fill(myDataSet); return myDataSet;//返回資料集