我收到一個奇怪的問題。我使用OLEDB與Excel連接 連接字符串= Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\ Execute.xls; Extended Properties = Excel 8.0;「);OLEDB連接不從excel表讀取數據
excel文件包含列字符串/整數值。 的問題是,有時連接讀取表值是絕對好的,但有時它錯過了一些數據值,並將其顯示爲System.DBNull。 的行爲很不一致。 請幫助。
我收到一個奇怪的問題。我使用OLEDB與Excel連接 連接字符串= Provider = Microsoft.Jet.OLEDB.4.0; Data Source = c:\ Execute.xls; Extended Properties = Excel 8.0;「);OLEDB連接不從excel表讀取數據
excel文件包含列字符串/整數值。 的問題是,有時連接讀取表值是絕對好的,但有時它錯過了一些數據值,並將其顯示爲System.DBNull。 的行爲很不一致。 請幫助。
我首先猜測是檢查你的區域參數,數字格式會因區域設置而不同,這可能會導致問題,儘管Excel應該管理它。或者你會自動執行,有時候它不會像它那樣困惑或者其他東西,然後渲染一些奇怪的數據,比如那些DBNull值。
這是你的問題。 IIRC,驅動程序只讀取前8行數據並根據該數據確定列的數據類型。
因此,假設在列1的前8行中只有數字。驅動程序將決定該列是一個整數。然後,如果它在第9行中遇到一個字符串,它將無法將其轉換爲整數,因此將DBNull返回給您。
有幾件事你可以做。
我也有一個看似混合的數字/文本數據類型的列,我只是想將其視爲文本。使它適用於我的原因是將IMEX = 1添加到連接字符串中的選項。 – 2011-05-24 14:06:32
使用此代碼
string pathcpnn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source =" + textBox1.Text + ";Extended Properties=\""Excel 8.0;HDR=Yes;IMEX=1;";";
OleDbConnection con = new OleDbConnection(pathcpnn);
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from[" + textBox2.Text + "$]", con);
myDataAdapter.Fill(dt);
DAtagridview1.datasource=dt;
感謝您的答覆。 現在我已將列類型從「常規」更改爲「文本」。但仍然存在相同的問題..它仍然沒有采取數值,並顯示它們爲System.DB空...有沒有解決方案嗎? – Pooja 2010-03-15 13:41:32