asp.net_Excel数据导入数据库
来源:互联网 发布:软件正版化实施方案 编辑:程序博客网 时间:2024/06/05 23:57
之前做过一个这样的项目,需要把Excel的数据导入到数据库,并实时在gridview上面分页显示出来(数据大于gridview一页显示的数量的时候分页,这里是显示4条),现在先收集起来。
DB db = new DB(); static int num,fy; //excel数据条数,分页 //批量添加 protected void txtMoreadd_Click(object sender, EventArgs e) { if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件 { ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('请您选择Excel文件')</script> "); return;//当无文件时,返回 } string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名 if (IsXls != ".xls") { ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('只可以选择Excel文件')</script>"); return;//当选择的不是Excel文件时,返回 } string filename = FileUpload1.FileName; //获取Execle文件名 DateTime日期函数 string savePath = Server.MapPath(("upfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径 FileUpload1.SaveAs(savePath); //SaveAs 将上传的文件内容保存在服务器上 DataSet ds = ExcelSqlConnection(savePath, filename); //调用自定义方法 DataRow[] dr = ds.Tables[0].Select(); //定义一个DataRow数组 int rowsnum = ds.Tables[0].Rows.Count; num = dr.Length; if (rowsnum == 0) { ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('Excel表为空表,无数据!')</script>"); //当Excel表为空时,对用户进行提示 } else { for (int i = 0; i < dr.Length; i++) { //前面除了你需要在建立一个“upfiles”的文件夹外,其他的都不用管了,你只需要通过下面的方式获取Excel的值,然后再将这些值用你的方式去插入到数据库里面 string user_name = dr[i]["user_name"].ToString(); string dept_id = dr[i]["dept_id"].ToString(); string spc_id = dr[i]["spc_id"].ToString(); string class_id = dr[i]["class_id"].ToString(); string room = dr[i]["room"].ToString(); string pic = dr[i]["pic"].ToString(); string strsql = "insert into users(user_name,dept_id,spc_id,class_id,room,pic)values('" + user_name + "','" + dept_id + "','" + spc_id + "','" + class_id + "','" + room + "','" + pic + "')"; //添加到数据库 db.sqlEx(strsql); } ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('Excle表成功导入" + num + "条数据!')</script>"); upfilecheck(); } } #region 连接Excel 读取Excel数据 并返回DataSet数据集合 /// <summary> /// 连接Excel 读取Excel数据 并返回DataSet数据集合 /// </summary> /// <param name="filepath">Excel服务器路径</param> /// <param name="tableName">Excel表名称</param> /// <returns></returns> public static System.Data.DataSet ExcelSqlConnection(string filepath, string tableName) { string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1'"; OleDbConnection ExcelConn = new OleDbConnection(strCon); try { string strCom = string.Format("SELECT * FROM [Sheet1$]"); ExcelConn.Open(); OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, ExcelConn); DataSet ds = new DataSet(); myCommand.Fill(ds, "[" + tableName + "$]"); ExcelConn.Close(); return ds; } catch { ExcelConn.Close(); return null; } } #endregion //gridview显示批量上传的数据 public void upfilecheck() { string strsql2 = @"SELECT top " + num + @" users.user_name, department.dept_name, special.spc_name, class.class_name, users.room FROM users INNER JOIN department ON users.dept_id = department.dept_id INNER JOIN special ON users.spc_id = special.spc_id INNER JOIN class ON users.class_id = class.class_id order by user_id desc"; DataTable dt = db.reDt(strsql2); GridView1.DataSource = dt; GridView1.DataBind(); Label3.Text = "共有:" + num + "条记录。"; fy = 2; }
表的格式如下: 9条数据
一按批量添加按钮,就有在gridview上面显示,而且自动分好页:
付DB.cs文件代码:
using System;......./// <summary>///DB 的摘要说明/// </summary>public class DB{ public DB() { // //TODO: 在此处添加构造函数逻辑 // } public SqlConnection GetCon() { string strcon = ConfigurationManager.AppSettings["sql"]; return new SqlConnection(strcon); } ///<summary> ///执行SQL语句 ///</summary> ///<param name="cmdstr">SQL语句</param> ///<returns>返回值为int型:成功返1,失败返0</returns> public int sqlEx(string cmdstr) { SqlConnection con = GetCon(); //连接数据库 con.Open();//打开连接 SqlCommand cmd = new SqlCommand(cmdstr, con); try { cmd.ExecuteNonQuery();//执行SQL语句并返回受影响的行数 return 1;//成功返回1 } catch { return 0;//失败返回0 } finally { con.Dispose();//释放连接对象资源,比close彻底 } } ///<summary> ///执行SQL查询语句 ///</summary> ///<param name="cmdstr">查询语句</param> ///<returns>返回DataTable数据表</returns> public DataTable reDt(string cmdstr) { SqlConnection con = GetCon(); SqlDataAdapter da = new SqlDataAdapter(cmdstr, con); DataSet ds = new DataSet(); da.Fill(ds); return (ds.Tables[0]); } ///<summary> ///执行SQL查询语句 ///</summary> ///<param name="cmdstr">查询语句</param> ///<returns>返回SqlDataReader对象dr</returns> public SqlDataReader reDr(string str) { SqlConnection con = GetCon();//连接数据库 con.Open();//并打开了连接 SqlCommand cmd = new SqlCommand(str, con); SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); return dr;//返回SqlDataReader对象dr }}
0 0
- asp.net_Excel数据导入数据库
- asp.net EXCEL数据 导入到数据库
- asp.net EXCEL数据 导入到数据库
- ASP.NET Excel数据导入数据库
- ASP.NET Excel数据导入数据库
- ASP.NET Excel数据导入数据库
- ASP.NET Excel数据导入数据库
- (原作)ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- ASP.NET中数据库数据导入Excel并打印
- Scala println Array
- HDU-2955 Robberies 01背包 + 概率
- android:ClassNotFoundException for Activity class的解决方法
- Android知识杂记
- Android 动画
- asp.net_Excel数据导入数据库
- [算法系列之二]二叉树各种遍历
- Windows学习心得【对话框2】
- 怎样编译 fmb & pld 文件
- DIV设置位置居中
- iOS应用程序生命周期(前后台切换,应用的各种状态)详解
- Android SQLite性能分析
- C# 发送邮件类及示例 (不知是修改了哪位博主的了)
- [算法系列之一]堆排序