我想检查excel数据的每个数据的数据类型。但是当我检查excel数据时,它会将所有数据显示为 string 类型。
C#,oleDb
//For validating Datatype
public List<string> ValidateDataType(DataRow row, List<DataExchangeDefinition> dataExchangeDefinitionList, List<string> dataColumnList)
{
//var dataColumnString = String.Join(", ", dataColumnList.ToArray());
Dictionary<string, Type> types = new Dictionary<string, Type>();
types.Add("int", typeof(System.Int32));
//types.Add("int", typeof(System.Int64));
types.Add("DateTime", typeof(System.DateTime));
types.Add("decimal", typeof(System.Decimal));
types.Add("float", typeof(System.Double));
types.Add("String", typeof(System.String));
List<string> dataTypeErrorList = new List<string>();
foreach (DataExchangeDefinition dt in dataExchangeDefinitionList)
{
if (dataColumnList.Any(str => str == dt.FieldName))
{
if (!row.IsNull(dt.FieldName))
{
var dat = row[dt.FieldName];
var t = row[dt.FieldName].GetType().Name;
var conObj = Convert.ChangeType(dat,types[t]);
string error = (from e in row.ItemArray
where conObj.GetType().Name.Contains(dt.DataType) == false
select dt.FieldName).DefaultIfEmpty("").FirstOrDefault();
if (error != "")
{
dataTypeErrorList.Add(error);
}
}
}
}
return dataTypeErrorList;
}
结果我将其作为列表传递。列表包含错误列名称。 使用Linq完成检查
这是我导入的excel数据
这是数据表中的数据。在这里,我添加了数字 2 而不是字符串。但实际上它是字符串。但是在这里我想检测为 int ,否则我的验证将失败。