C# 从excel文件读取字段类型错误
我使用此函数从xls 2003文件中读取信息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
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。