导入EXCEL到数据库
来源:互联网 发布:阿里巴巴分销传淘宝 编辑:程序博客网 时间:2024/05/22 10:36
作用:批量的导入数据,不用逐个进行导入。节省时间,方便管理。
大致步骤:
1.首先,在EXCEL中填写好数据,并且保存好。这是源数据。
2.把EXCEL导入到指定的项目文件夹下,然后读取EXCEL数据到内存中(datatable)
3.从datatable中取出数据,放入数据库中。
一个例子。
将工资表导入到sqlserver中。步骤如下
1.将数据填入EXCEL,这个不用多说,手工录入即可。
2.将EXCEL文件储存到项目的内存(虚拟的),代码如下
/// <summary> /// 将excel文件的数据放入dataset中 /// </summary> /// <param name="filenameurl">文件名</param> /// <param name="table">转化成datatable后该table的名字</param> /// <returns></returns> public DataSet ExecleDs(string filenameurl, string table)//将EXCEL中的数据放进dataset中的da { string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); DataSet ds = new DataSet(); OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn); odda.Fill(ds, table); return ds; }3.将datatable中的文件存入数据库中。
此处假设点击一个按钮button1,触发导入事件。则代码如下所示。
protected void Button1_Click(object sender, EventArgs e) { if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件 { Response.Write("<script>alert('请您选择Excel文件')</script> "); return;//当无文件时,返回 } string IsXls=System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名 if (IsXls != ".xls") { Response.Write("<script>alert('只可以选择Excel文件')</script>"); return;//当选择的不是Excel文件时,返回 } SqlConnection cn = new SqlConnection(strConn); cn.Open(); string filename = DateTime.Now.ToString("yyyymmddhhMMss") + FileUpload1.FileName; //获取Execle文件名 DateTime日期函数 string savePath = Server.MapPath(("~\\upfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径 FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上 DataSet ds = ExecleDs(savePath, filename); //调用自定义方法 DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组 int rowsnum = ds.Tables[0].Rows.Count; if (rowsnum == 0) { Response.Write("<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示 } else { for (int i = 0; i < dr.Length; i++) { string hhaspx_rq = dr[i]["日期"].ToString();//日期 excel列名【名称不能变,否则就会出错】 string hhaspx_bh = dr[i]["编号"].ToString();//编号 列名 以下类似 string hhaspx_xm = dr[i]["姓名"].ToString(); string hhaspx_dx = dr[i]["底薪"].ToString(); string hhaspx_kh = dr[i]["考核"].ToString(); string hhaspx_jl = dr[i]["奖励"].ToString(); string hhaspx_jt = dr[i]["津贴"].ToString(); string hhaspx_jb = dr[i]["加班"].ToString(); string hhaspx_zb = dr[i]["值班"].ToString(); string hhaspx_jx = dr[i]["绩效"].ToString(); string hhaspx_hj = dr[i]["合计"].ToString(); string sqlcheck = "select count(*) from hhaspx_gz where hhaspx_rq='" + hhaspx_rq + "'And hhaspx_xm='" + hhaspx_xm + "'"; //检查用户是否存在 SqlCommand sqlcmd = new SqlCommand(sqlcheck,cn); int count = Convert.ToInt32(sqlcmd.ExecuteScalar()); if (count < 1) { string insertstr = "insert into hhaspx_gz (hhaspx_rq,hhaspx_bh,hhaspx_xm,hhaspx_dx,hhaspx_kh,hhaspx_jl,hhaspx_jt,hhaspx_jb,hhaspx_zb,hhaspx_jx,hhaspx_hj) values('" + hhaspx_rq + "','" + hhaspx_bh + "','" + hhaspx_xm + "','" + hhaspx_dx + "','" + hhaspx_kh + "','" + hhaspx_jl + "','" + hhaspx_jt + "','" + hhaspx_jb + "','" + hhaspx_zb + "','" + hhaspx_jx + "','" + hhaspx_hj + "')"; SqlCommand cmd = new SqlCommand(insertstr, cn); try { cmd.ExecuteNonQuery(); } catch (MembershipCreateUserException ex) //捕捉异常 { Response.Write("<script>alert('导入内容:" + ex.Message + "')</script>"); } } else { Response.Write("<script>alert('内容重复!禁止导入');location='default.aspx'</script></script> "); continue; } } Response.Write("<script>alert('Excle表导入成功!');location='default.aspx'</script>"); } cn.Close(); }
几个注意点:
1.FileUpload1是.net中的一个控件,用于浏览(上传)计算机硬盘上的的文件。
2.程序先判断是否选择了文件,然后通过后缀名判断选择的是否是EXCEL文件,只有这两个条件都满足了,才能进入下一步的操作。
3.其他的看代码就能清楚。
不足之处:
- excel导入到数据库
- excel导入到数据库
- 导入EXCEL到数据库
- 从Excel导入到数据库
- .net excel导入到数据库
- .net excel导入到数据库
- delphi 导入Excel到数据库
- 导入Excel数据到数据库
- 将Excel导入到数据库
- 将excel导入到数据库
- 将Excel导入到数据库
- Excel 导入到数据库,正解
- Delphi excel导入到数据库
- 将EXCEL导入到数据库
- excel批量导入到数据库
- Excel批量导入到数据库
- php导入excel 到数据库
- Java 导入Excel到数据库
- 11级_Java_曹建波 03.06 Struts2_ognl
- Java之美[从菜鸟到高手演变]之Linux篇——Linux下增加swap分区的方法
- ibatis和hibernate的区别,以及如何选择~
- 季节
- [面试] C++中的static关键字 (static 上镜率非常高!)
- 导入EXCEL到数据库
- 数据恢复之commitlog
- HDU 2079 (母函数)
- Android_开发 仿微信之界面导航篇
- Android开发教程类专题资料免费下载
- DOM
- 黑马程序员——Java基础语法:几种简单的排序算法的实现
- C# using 三种使用方式
- sax