这次的excel与以往的不同,首先根据excel中的中文名称找到数据表中的列属性的说明属性,若一直,则excel中的列对应数据表的列;其次excel第一行是备注行,第二行是列名,后面才是数据行。
这样处理的好处是,以后客户更改excel模板,改变导入的信息,系统不需变更代码,比较灵活。
第一步:
从数据库中找出数据表列名与说明属性的对应关系:
private DataTable dtNameMapping;
public DataTable DtNameMapping
{
get
{
if (dtNameMapping == null)
{
dtNameMapping = new DataTable();
if (!string.IsNullOrEmpty(tableName))
{ //用函数fn_listextendedproperty找出列名与说明属性的对应关系
string sql = string.Format(@"SELECT cast(objname as varchar(64)) objname ,cast(value as varchar(64)) value
FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '{0}', 'column', default)", tableName);
dtNameMapping = KPMSDatabase.KPMSDB.ExecuteDataSet(CommandType.Text, sql).Tables[0];
}
}
return dtNameMapping;
}
}
第二步:
将excel读入到DataTable中