開始時候按照嚴格的excel模板來執行,資料都是嚴格要求的,可是到了客戶那裡,什麼花招都來了..也不使用指定的模板了...
導致乙個問題: 資料列格式不一致 比如一列 前面幾個全部是數字型別,中間穿插幾個以字元形式儲存的數字... 直接導致這些資料讀取為dbnull
怎麼解決...搜尋一下..發現這個是oledb的bug...不管你設定成imex =1 還是=2 , 他都不會讀取這些資料
最終解決方案... 使用interop,首先轉換成csv...然後讀取文字行 ,部分**拷貝自網路
if (directory.exists(temppath))
directory.createdirectory(temppath);
string filename = temppath + guid.newguid() + ".csv";
try//將資料填入資料表
int j = 0;
while ((line = sr.readline()) != null)
table.rows.add(row);
}sr.close();
//顯示資料
dgclass.datasource = table;
importnow.enabled = true;
}catch (exception ex)
C 讀取Excel(通過OleDb)
通過oledb連線,讀取excel。provider microsoft.jet.oledb.4.0 data source filenameurl extended properties excel 8.0 hdr yes imex 1 特別注意 extended properties excel...
Oledb的方式匯出Excel
連線字串 string connectionstring provider microsoft.jet.oledb.4.0 data source excel檔案路徑及檔案全名 extended properties excel 8.0 hdr yes imex 2 定義連線物件 oledbconn...
oledb讀取Excel資料丟失原因
產生這種問題的根源與excel isam 3 indexed sequential access method,即索引順序訪問方法 驅動程式的限制有關,excel isam 驅動程式通過檢查前幾行中實際值確定乙個 excel 列的型別,然後選擇能夠代表其樣本中大部分值的資料型別 4 也即excel ...