2011-12-28 38 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单元格进行相同的格式化,并从此处获取代码列和它的工作