博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC 从Excel导入到DataTable
阅读量:6854 次
发布时间:2019-06-26

本文共 12481 字,大约阅读时间需要 41 分钟。

1、前台界面需要引用: 

 1 <script src="~/Scripts/jquery-1.10.2.js"></script>

2 <script src="~/Scripts/ajaxfileupload.js"></script> 

 ajaxfileupload下载地址在这里:http://files.cnblogs.com/files/kissdodog/ajaxfileupload_JS_File.rar 

2、前台代码

1 2 

3、JS代码

1 $(function () { 2         $(":button").click(function () { 3             if ($("#file").val().length > 0) { 4                 ajaxFileUpload(); 5             } 6             else { 7                 $.messager.alert("提示", "请选择Excel文档!"); 8             } 9         })10     })11 12 13     //上传控件14     function ajaxFileUpload() {15         $.ajaxFileUpload16         (17             {18                 url: host_key + '/Handler/Upload.ashx', //用于文件上传的服务器端请求地址19                 secureuri: false, //一般设置为false20                 fileElementId: 'file', //文件上传空间的id属性  21                 dataType: 'json', //返回值类型 一般设置为json22                 data: { action: "upload" },23                 success: function (data)  //服务器成功响应处理函数24                 {25                     debugger26                     if (data.error == 1) {27                         $.messager.alert("提示", data.result);28                         return;29                     }30                     $("#grid").datagrid("reload");31                     //InitGrid(data);32                     $.messager.alert("提示", "文件已上传,数据加载完毕!");33                 },34                 error: function (data, e)//服务器响应失败处理函数35                 {36                     $.messager.alert("提示", "上传失败!");37                 }38             }39         )40         return false;41     }

4、请求的 一般处理程序代码(可根据自己的情况更改)

1 ///   2     /// Upload 的摘要说明  3     ///   4     public class Upload : IHttpHandler, System.Web.SessionState.IRequiresSessionState  5     {  6         public void ProcessRequest(HttpContext context)  7         {  8             context.Response.ContentType = "text/plain";  9             10             HttpPostedFile file = context.Request.Files["file"]; 11             string saname = context.Request["action"]; 12             string resule = ""; 13             string fileExtenSion; 14             fileExtenSion = Path.GetExtension(file.FileName); 15              16             if (fileExtenSion.ToLower() != ".xls" && fileExtenSion.ToLower() != ".xlsx") 17             { 18                 resule = "上传的文件格式不正确!"; 19                 context.Response.Write("{\"error\":1,\"url\":\"" + file.FileName + "\",\"result\":\"" + resule + "\"}"); 20             } 21             else if (file.ContentLength > 1048576) 22             { 23                 resule= "文件不能超过1M!"; 24                 context.Response.Write("{\"error\":1,\"url\":\"" + file.FileName + "\",\"result\":\"" + resule + "\"}"); 25             } 26             else 27             { 28  29                 DataTable dt = xsldata(file, saname, fileExtenSion);//excle转换成datatable 30                 resule = DataInSql(dt, context); 31                 context.Response.Write("{\"error\":0,\"url\":\"" + file.FileName + "\",\"result\":\"" + resule + "\"}"); 32             } 33         } 34  35         OperContext oc = OperContext.CurrentContext; 36         private string DataInSql(DataTable dt, HttpContext context) 37         { 38             int errorcont = 0; 39             int insertcount = 0;//记录插入成功条数   40             int updatecount = 0;//记录更新信息条数   41  42             int sumcount = dt.Rows.Count; 43  44             #region 获取导入的文件名 45             HttpPostedFile file = context.Request.Files["file"]; 46             string fileExtenSion; 47             fileExtenSion = Path.GetExtension(file.FileName); 48             //if (file.ContentLength > 100000) 49             //{ 50             //    return "文件不能超过100KB!"; 51             //} 52             #endregion 53  54             //System.Data.DataTable sumdt = dt.Copy(); 55             DataRow dr = dt.NewRow(); 56  57             tb_Detail detail = new tb_Detail(); 58             string guid = GenerateRandomCode(5); 59             for (int i = 0; i < sumcount; i++) 60             { 61                 //判断 如果某一条数据执行失败,进入Catch循环后,继续执行for循环 62                 try 63                 { 64                     #region 65  66                     int len = dt.Rows[i][3].ToString().Length; 67                     string code = dt.Rows[i][1].ToString() == null ? "" : dt.Rows[i][1].ToString(); 68                     string idtype = dt.Rows[i][6].ToString() == null ? "" : dt.Rows[i][6].ToString(); 69                     string grade = dt.Rows[i][8].ToString() == null ? "" : dt.Rows[i][8].ToString(); 70                     string name = dt.Rows[i][3].ToString() == null ? "" : dt.Rows[i][3].ToString().Substring(1, len - 1); 71                     string nFirstName = dt.Rows[i][3].ToString() == null ? "" : dt.Rows[i][3].ToString().Substring(0, 1); 72                     string gender = dt.Rows[i][4].ToString() == null ? "" : dt.Rows[i][4].ToString(); 73                     string birth = Convert.ToString(dt.Rows[i][5]) == "" ? "" : Convert.ToString(dt.Rows[i][5]); 74                     string mobile = dt.Rows[i][13].ToString() == null ? "" : dt.Rows[i][13].ToString(); 75                     string address = dt.Rows[i][12].ToString() == null ? "" : dt.Rows[i][12].ToString(); 76                     string c_time = DateTime.Now.ToString("yyyy-MM-dd"); 77                     string idCard = dt.Rows[i][7].ToString() == null ? "" : dt.Rows[i][7].ToString(); 78                     int creatorId = AdminSystemInfo.CurrentUser.Uid == null ? 0 : AdminSystemInfo.CurrentUser.Uid; 79  80                     dr = dt.Rows[i]; 81  82                     tb_User_Info info = new tb_User_Info(); 83                     info.Name = name; 84                     info.nFisrtName = nFirstName; 85                     info.Gender = gender; 86                     if (string.IsNullOrWhiteSpace(birth)) info.Birth = null; 87                     else info.Birth = Convert.ToDateTime(birth); 88                     info.Mobile = mobile; 89                     info.address = address; 90                     info.C_Time = Convert.ToDateTime(c_time); 91                     info.IDcard = idCard; 92                     info.CreatorId = creatorId; 93                     info.IsDel = 0; 94  95                     List
appList = oc.iBllSession.Itb_User_Info_HH_BLL.GetListBy(p => p.IsDel == 0); 96 #region 判断是或否存在患者信息问题 97 98 if (!string.IsNullOrWhiteSpace(mobile) || !string.IsNullOrWhiteSpace(idCard)) 99 {100 appList = appList.Where(o => o.Mobile == mobile || o.IDcard == idCard).ToList();101 }102 if (!string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString()))103 {104 appList = appList.Where(o => (o.nFisrtName == nFirstName && o.Name == name)).ToList();105 }106 if (!string.IsNullOrWhiteSpace(gender))107 {108 appList = appList.Where(o => o.Gender == gender).ToList();109 }110 if (appList.Count > 0)111 {112 updatecount++;113 }114 else115 {116 int num = oc.iBllSession.Itb_User_Info_HH_BLL.Add(info);117 if (num > 0)118 {119 tb_User_Member member = new tb_User_Member();120 121 member.uId = info.Id;122 member.ParentMemberId = 0;123 member.Mtype = 1;124 125 int nember = oc.iBllSession.Itb_User_Member_HH_BLL.Add(member);126 }127 insertcount++;128 129 }130 #endregion131 }132 catch (Exception ex)133 {134 135 detail.Code = dr[1].ToString() == null ? "" : dr[1].ToString();136 detail.Name = dr[3].ToString() == null ? "" : dr[3].ToString();137 detail.Gender = dr[4].ToString() == null ? "" : dr[4].ToString();138 DateTime datatime=new DateTime();139 if (string.IsNullOrWhiteSpace(dr[5].ToString())) detail.Birthday = null;140 else if (DateTime.TryParse(dr[5].ToString(), out datatime)) detail.Birthday = Convert.ToDateTime(dr[5].ToString());141 else detail.Birthday = null;142 detail.IDType = dr[6].ToString() == null ? "" : dr[6].ToString();143 detail.IDCard = dr[7].ToString() == null ? "" : dr[7].ToString();144 detail.Grade = dr[8].ToString() == null ? "" : dr[8].ToString();145 detail.Address = dr[12].ToString() == null ? "" : dr[12].ToString();146 detail.CreatorId = AdminSystemInfo.CurrentUser.Uid;147 detail.Creator = AdminSystemInfo.CurrentUser.uName;148 detail.C_time = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd"));149 detail.Mobile = dr[13].ToString() == null ? "" : dr[13].ToString();150 detail.State = 0;151 detail.UploadId = Convert.ToInt32(guid);152 oc.iBllSession.Itb_Detail_HH_BLL.Add(detail);153 154 LogHelper.Error(ex);155 continue;156 }157 }158 159 return "成功上传:(" + insertcount + ")条数据!重复数据:(" + updatecount + ")条";160 }161 162 ///
163 /// 讲excle转换成datatable164 /// 165 ///
excle文件166 ///
登录名167 ///
扩展名168 ///
169 private DataTable xsldata(HttpPostedFile file, string saname, string fileExtenSion)170 {171 try172 {173 if (!Directory.Exists(serverPath))174 {175 Directory.CreateDirectory(serverPath);176 }177 string filePath = Path.Combine(serverPath, DateTime.Now.ToString("yyyyMMddhhmmss") + "_" + file.FileName);178 file.SaveAs(filePath);179 //HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES 180 string connstr2003 = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";181 string connstr2007 = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";Extended Properties=\"Excel 12.0;HDR=YES\"";182 OleDbConnection conn;183 if (fileExtenSion.ToLower() == ".xls")184 {185 conn = new OleDbConnection(connstr2003);186 }187 else188 {189 conn = new OleDbConnection(connstr2007);190 }191 conn.Open();192 DataTable dt = new DataTable();193 try194 {
            DataTable table = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);                     string tableName;                      tableName = table.Rows[0]["Table_Name"].ToString();                     string sql = "select * from" + "[" + tableName + "]";196 OleDbCommand cmd = new OleDbCommand(sql, conn);197 198 OleDbDataReader sdr = cmd.ExecuteReader();199 dt.Load(sdr);200 sdr.Close();201 conn.Close();202 203 }204 catch (Exception ex)205 {206 LogHelper.Error(ex);207 }208 209 //删除服务器里上传的文件 210 if (File.Exists(filePath))211 {212 File.Delete(filePath);213 }214 return dt;215 }216 catch (Exception ex)217 {218 LogHelper.Error(ex);219 return null;220 }221 }222 223 public bool IsReusable224 {225 get226 {227 return false;228 }229 }230 }

 

转载于:https://www.cnblogs.com/congcongliu/p/7991634.html

你可能感兴趣的文章
PHP mysql_fetch_row() 函数
查看>>
Shell脚本编写教程
查看>>
【00】why集搜客网络爬虫?
查看>>
css鼠标样式-手型
查看>>
python小程序之文件整理
查看>>
git 放弃本地修改 强制更新
查看>>
Linux系统下bin boot dev...等目录的作用是什么?
查看>>
Node.js之assert_2018.11.7
查看>>
输入一个正整数,若该数能用几个连续正整数之和表示,则输出所有可能的正整数序列...
查看>>
不能以根用户身份运行 Google Chrome 浏览器
查看>>
zookeeper学习系列-与Hbase的关系(6)
查看>>
nmap扫描工具的安装与使用
查看>>
Python----多线程的学习
查看>>
WorkSpace介绍 -----Android4.4 Launcher3 系列学习
查看>>
爪哇(Java)自定义的二个字符串高效处理方法,在静寂一个半月之后
查看>>
effective java读书笔记2:遇到多个构造器参数时要考虑用构建器
查看>>
架构师之路----文章汇总
查看>>
DIV+CSS 页面布局--固定宽度且居中的版式
查看>>
apache配置多域名
查看>>
lae界面开发工具入门之介绍九--<简单逻辑篇>
查看>>