网站导入Excel,数据字段不固定,无法读取。
利用Aspose.Cells控件 读取 Excel 表格 遇到一个问题。
正常上传表格格式
姓名、身份证号、月薪、房租、电视费
测试阶段,客户上传的表格格式有可能是:
身份证号、房租、月薪、姓名、电视费
表格内部列完全打乱。
以前做的是利用下标来做区分
读取姓名 代码为: dt.Rows[i][0].ToString();
身份证号 代码为:dt.Rows[i][1].ToString();
...., 这种方法完全可以正常读取入库。
但现在想 利用
dt.Rows[i]["姓名"].ToString();方式读取姓名行中数据 会出现错误。
列“姓名”不属于表 。
说明: 执行当前 Web 请求期间,出现未经处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息:
System.ArgumentException: 列“姓名”不属于表 。
------解决方案--------------------当然,列头只对最上面一行有效
你需要先循环读取
Dictionary<string, int> dict = new Dictionary<string, int>();
for (int i = 0; i <= 4; i++)
{
dict.Add(dt.Rows[0][i].ToString(), i);
}
匹配列头,然后根据这个去读取数据:
dt.Rows[i][dict["姓名"]].ToString();
------解决方案--------------------利用dt.Rows[i]["姓名"].ToString();这种方式读取,有时候存在空格或Tab键也没看到,既然Excel自己整理的,你应该有一个格式以及你的表相对应.或者你先把Excel全部导入数据库再做整理