鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入excel文档中学生信息如数据库的功能。结合网上各类大牛的综合版本出炉。。
首先具体的实现思想如下:
1。先使用FileUpload控件fuload将Excel文件上传到服务器上得某一个文件夹。
2。使用OleDb将已经上传到服务器上的Excel文件读出来,这里将Excel文件当做一个数据库来读。在联系数据库语句中,Data Source就是该文件在服务器上得物理路径
3。将第二步中读出的数据以DataTable对象返回。
4。遍历DataTable对象,然后到Sql Server数据库中查询,是否存在该条数据。如果存在,可以做更新,或者不做处理;如果不存在,则插入数据。
注意:在遍历DataTable的时候,可是使用dt.Rows[i]["Name"].ToString();Name为Name列的表头,所以Excel中列的顺序就无关紧要了。当然,前提是你知道Excel里列中各表头的名字。如果Excel中列的顺序固定,即可按下面代码中的方式进行。
实现方法说明清楚了,在本功能的设计中需要注意的是提示“外部表不是预期的格式”的错误,这里主要是excel的版本问题
如上仅支持excel 03-07版本,更高版本的excel另存为为兼容模式。当然我在编程过程中发现有的例子会在mappath添加物理地址,个人不是很建议,这个方式可能会打开固定的路径,感觉不太方便吧。
代码截图略,网上都有,需自己整合。
另外,需要注意的是,当数据库中存在相同的数据是会发生错误,导致系统出错崩溃,我们可以添加一条选择语句。例如
这句select语句取得是excel中导入的数据(学号)与原数据库中数据的交集,我们可以假设交集为空时,那么执行插入数据;交集不为空,即数据发生重复时,跳出循环。
好的例子,懒得加链接了,直接粘网页地址了。
http://blog.sina.com.cn/s/blog_5fe13c500100cwoh.html
http://www.cnblogs.com/ZQiuMei/archive/2012/12/28/2837065.html
http://www.cnblogs.com/kingkongv/archive/2012/08/26/2657436.html
http://blog.csdn.net/cpcpc/article/details/7029446
http://blog.sina.com.cn/s/blog_77f88ea60100zi64.html
都不错