2011-12-28 63 views
0

我用這個功能來讀取XLS信息(2003)文件讀字段類型錯誤文件

var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", path); 

var adapter = new OleDbDataAdapter("SELECT * FROM [page1$]", connectionString); 
var ds = new DataSet(); 
adapter.Fill(ds, "anyNameHere"); 

var data = ds.Tables["anyNameHere"].AsEnumerable(); 

List<client> query = data.Where(x => x.Field<string>(1) != string.Empty) 
    .Select(x => 
    new client 
    { 
     Code = x.Field<string>(1) != null ? x.Field<string>(1) : "None", 
     name = x.Field<string>(2), 
    } 

在文件中的一些代碼有一個整型格式,如「2100」以及其他類似的「G200」,但場(1)被讀取爲double,並且不能讀取第二個類型(轉換錯誤)。我看了一下xls文件和標準類型的列,即使我把它寫成文本,但我有同樣的問題。

PS:我一步一步使用,發現數據具有第二種類型NULL的字段代碼。

@GertArnold:

1 => M; 2801; Ronald

2 => M; 3005; Soufian

3 => F; 2009;伊麗莎白

121 => M; G125; khaled => le code est lu null

+0

雖然我不能幫你在你的問題的細節(不流利的C#),我可以告訴你,當連接到一個Excel文件作爲數據庫時,適配器「猜測」的數據類型基於你桌子前幾行的內容。希望有所幫助。 – Pynner 2011-12-28 19:12:41

+0

@Pynner:我用第二種類型的代碼在文件的第一個中寫了一些ligne,但是在數據中是NULL! – Akrem 2011-12-29 08:56:59

+0

請在您的帖子中顯示xls的前幾行。 – 2012-01-12 08:09:14

回答

0

我使用formatting => = TEXTE(B1;「####」)製作第四列,並對所有colmne單元格進行相同的格式化,並從此處獲取代碼列和它的工作