鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入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

都不错

ASP.NET 导入EXCEL文档的更多相关文章

  1. asp.net 读取Excel文档

    <注:>默认读取数据从Excel的第二行开始. public DataSet ReadExcel(string Path) { string strConn = "Provide ...

  2. ASP.NET 导出Excel文档

    System.IO.TextWriter writer = new System.IO.StreamWriter(Server.MapPath("/provprice.xls"), ...

  3. Asp.net的对Excel文档的导入导出操作

    刚刚初入职场,在休闲的时间写下了项目中用到的对Excel文档操作的方法以及总结,多的不说,直接上代码 public static void CreateExcel(DataSet ds, string ...

  4. ASP.NET MVC下载excel文档

    问题来自论坛: 很早以前,学习做asp.net练习时,就是分享过<ASP.NET MVC应用程序实现下载功能>http://www.cnblogs.com/insus/p/3615714. ...

  5. NPOI 2.1.1 系列(1) 使用NPOI读取 Excel文档 ;NpoiExcelHelper 导入导出 2003格式 2007格式的 Excel; Npoi 导出 xlsx 格式

    下载地址 http://npoi.codeplex.com/releases 下面放一个 NPOIHelper 助手类吧,也不是我写的- NpoiExcelHelper 可以生成xlsx格式publi ...

  6. 转:ASP.NET MVC 将IList<T>导出Excel文档的泛型类

    /// <summary> /// 提供将泛型集合数据导出Excel文档. /// </summary> /// <typeparam name="T" ...

  7. 一次Mono解析Excel文档编码出错排查记录

    最近在捯饬Asp.Net站点部署到Linux平台上面,在文档导入的操作中经过网上搜索采用了能够支持跨平台的ExcelDataReader组建.在本地windows上测试通过NuGet安装的组建,这货依 ...

  8. ASP.NET生成WORD文档,服务器部署注意事项

    网上转的,留查备用,我服务器装的office2007所以修改的是Microsoft Office word97 - 2003 文档这一个. ASP.NET生成WORD文档服务器部署注意事项 1.Asp ...

  9. 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出

    我们知道,一般都导出的Word文档或者Excel文档,基本上分为两类,一类是动态生成全部文档的内容方式,一种是基于固定模板化的内容输出,后者在很多场合用的比较多,这也是企业报表规范化的一个体现. 我的 ...

随机推荐

  1. 又拍云——图像处理师(GraphicsMagick、ImageMagick、FFmpeg)

    云处理平台开发工程师 工作地:杭州 岗位职责:负责云处理平台研发工作: 岗位要求: 扎实的 C 语言编程基础及算法优化能力: 至少能够熟练使用一门脚本语言(Python.Ruby.Lua 等)进行日常 ...

  2. Velocity

    vm模板 设计原则 让前端来写后端的vm模板,并且前端不需要搭建各种繁杂的后端环境,前后端以 .vm 为沟通桥梁,另外模板的数据源可以在项目开始前前后端约定之后生成JSON文件,从而使两个角色并行开发 ...

  3. servlet单例多线程

    Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servlet就被加载并实例化(只存在 ...

  4. 《深度探索c++对象模型》chapter1关于对象对象模型

    在c++中,有2种class data member:static和nostatic,以及3钟class member function:static,nostatic和virtual.已知下面这个c ...

  5. 【转】Android ROM研究---Android build system增加模块

    原文网址:http://hualang.iteye.com/blog/1141315 Android build system就是编译系统的意思 在我们需要向自己编译的源代码中增加模块的时候,需要一些 ...

  6. 用指针将字符串a的内容复制到字符串b

    #include <stdio.h> #include <stdlib.h> /**int main() { char a[]="i love you very ma ...

  7. 邮件发送小demo

    //send email public static bool SendEmail() { //实例化发件人地址 MailAddress from = new MailAddress("aa ...

  8. leetcode distinct-subsequences(DP)

    参考https://oj.leetcode.com/problems/distinct-subsequences 动态规划方程 dp[i][j]=dp[i-1][j-1]+dp[i-1][j] (s( ...

  9. nyoj 329 循环小数【KMP】【求最小循环节长度+循环次数+循环体】

    循环小数 时间限制:3000 ms  |  内存限制:65535 KB 难度:1   描述 我们可爱的 c小加 近段儿正在潜心研究数学,当他学习到循环小数这一部分时不是太明白循环体是什么意思(比如说3 ...

  10. Linux下安装MySQL5.6

    传送门:http://www.jianshu.com/p/f4a98a905011 字数802 阅读164 评论0 喜欢4 环境:1.操作系统:CentOS release 6.8 (Final)2. ...