C# 从excel文件读取字段类型错误

C# 从excel文件读取字段类型错误,c#,linq,excel,dataset,C#,Linq,Excel,Dataset,我使用此函数从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 Data

我使用此函数从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),
    }
文件中的一些代码具有Int格式(如2100)和其他格式(如G200),但field1的读取方式为double,无法读取第二个类型转换错误。我查看了xls文件和标准类型的列,即使我将其设置为文本,但我也有同样的问题

PS:我一步一步地使用,发现数据的字段代码为第二种类型NULL

@格塔诺尔:

1=>M;2801 ; 罗纳德

2=>M;3005 ; 苏菲亚

3=>F;2009 ; 伊丽莎白


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

我用格式=>=TEXTEB1创建第四列;对所有colmne单元格进行相同的格式设置,我从本专栏中获得了代码,它可以工作

虽然我不能帮助您解决问题的具体细节,但我可以告诉您,当连接到Excel文件作为DB时,适配器会根据表的前几行中的内容猜测数据类型。希望有帮助。@Pynner:我在第一个文件中用第二个类型的代码编写了一些ligne,但在数据中为NULL!请在您的帖子中显示xls的前几行。第二列被推断为double,原因由Pynner解释。Excel格式没有什么区别。任何不是像G200那样的双精度值都将变为null。这就是为什么带Excel的OleDb很糟糕。使用第三方组件,如Gembox或Flexcel。