【发布时间】:2018-05-20 08:17:00
【问题描述】:
从 Excel 文件填充的数据表中读取数据时,出现“无法将 'System.Double' 类型的对象转换为 'System.String' 类型。”列数据类型为 double 时的异常。我的代码如下所示
var importedProducts = dtImportedData.AsEnumerable()
.Where(dtProduct => !string.IsNullOrWhiteSpace(dtProduct.Field<string>("product_id")))
.Select(dtProduct => new
{
product_id = dtProduct.Field<string>("product_id").Trim(),
product_qty = Convert.ToInt32(dtProduct.Field<double>("product_qty "))
}).ToList();
当 product_id 列具有文本数据类型时,一切正常。但是当有双重数据类型时,它会抛出异常。
我已经尝试过here的解决方案
【问题讨论】:
-
那么您有一个列可以神奇地将其类型更改为另一种类型?
-
@Steve,你是对的。用户根据自己的意愿更改excel列数据类型,我们无法控制。
-
从逻辑上讲,您不应该使用相同的代码来读取不同的数据类型。
标签: excel linq c#-4.0 datatable