把Excel表中的数据导入到数据库中,用.net程序实现的思路是什么?
导入的时候有两种情况:
1.有一张表,除了第一行是表头不导入数据库以为,其他的单元格的数据都导入数据库;
举例:
编码 |
机构名 |
年份 |
单位类型 |
100002988 |
某某研究所 |
2011 |
国有 |
100000193 |
某某人才中心 |
2011 |
国有 |
100003462 |
某某信息中心 |
2011 |
国有 |
100006229 |
某某区卫生信息中心 |
2011 |
私有 |
100025145 |
某某中心体检站 |
2011 |
私有 |
这种表的导入方法有哪些呢?
2.有一张表,是一张二维表,导入的时候只导入表中某一列或者某几个单元格的数据,这个怎么实现呢?
指标 |
单位 |
2010年 |
参加项目的人数情况 |
|
|
企业 |
人 |
10 |
事业 |
人 |
21 |
机关 |
人 |
15 |
其他 |
人 |
30 |
如上表中导入的只是第三列的10、21、15、30这几个单元格所在的数据,这种情况要如何实现呢?
导入前提是模板,像楼主说的那种情况,你提供下载模板,让他们按你的模板去做数据,而不是要让系统去适应EXCEL。中国的EXCEL千千万,要适应你适应过来吗?这个一定要坚持。
我做过一个万能导入器,前提也是表是标准的二维表,第一列是列头。至少也得让客户达到这一步。
我实现过N个导入了,所以经验多一些:
简单步骤:用OleDbConnection导入EXCEL到DataTable=====》遍历DataTable生成插入SQL====》用事务把SQL执行。
简单步骤最多也就应付而已,我实际用的步骤是:
1,OleDbConnection导入EXCEL到DataTable,注意要想导入2003以上版本的EXCEL,要安装相应组件。
2,检查必要的列是否存在,就是你数据库中有列名叫A的列,EXCEL也得有相应的对应列(当然不是非也叫A)
3,检查数据类型数据:即数据表里如果A列是数字类型,EXCEL对应列也得检查,
4,检查业务数据:这跟据体业务相关,比如一个人员表中的部门编号为10000,部门表里面必须要有10000这个部门
5,这步导入,2,3,4步都过后,这步导入不能出错,出错了说明2,3,4没做好。
通过 OleDbConnection 从 Excel 查询出数据到 DataTable 中。然后再用 SqlConnection 把DataTable 中数据更新到数据库。
能不能说的详细点啊?
1.第一张表用OleDbConnection读取EXCEL到DataTable里面, 然后遍历每行写Insert语句插入到数据库. 默认第一行为表头.
2.第二个表如果只有小量的文件,你就手动把第二行删除了,然后用上面的方法导入数据库. 如果有很多这样的文件. 那么在遍历DataTable的时候就从第二行开始,跳过第一行写Insert语句.
给你一个实例