C# 读取excel文件并保存到数据库

protected void Button1_Click(object sender, EventArgs e)
        {
            //一、上传文件
            string pathstr = "";
            string fileName = "";
            pathstr = Server.MapPath("/UpLoads/");
            //判断文件是否为空
            if (!fupExcel.HasFile) 
            {
                labTips.Text = "上传文件不存在,请选择要上传的文件!";
                return;
            } 
            //文件格式安全
            fileName = fupExcel.FileName;
            string LastName = Path.GetExtension(fileName).ToLower();
            //判断文件格式
            if (LastName != ".xls" & LastName != ".xlsx")
            {
                labTips.Text = "上传失败,文件类型不正确!";
                return;
            }
            //重命名
            fileName = DateTime.Now.Ticks.ToString() + fileName;
            pathstr = pathstr + fileName;
            //上传
            fupExcel.SaveAs(pathstr);


            //二、excel处理
            OleDbConnection ole = null;
            try{
                string strConn;
                //Excel 2007 以上版本连接字符串
                strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathstr + ";Extended Properties='Excel 12.0;HDR=YES;IMEX=1';"; // Office 07及以上版本 不能出现多余的空格 而且分号注意
                //建立连接
                ole = new OleDbConnection(strConn);
                ole.Open();
                //表名
                string sql = "select * from [userlist$]";
                //建立数据适配器
                OleDbDataAdapter oleExcel = new OleDbDataAdapter(sql, ole);
                //新建数据集
                DataSet dsExcel = new DataSet();
                //把数据适配器中的数据读到数据集中的一个表中(表名为sheet1)
                oleExcel.Fill(dsExcel, "Sheet1");
 
                DataTable tb= dsExcel.Tables["Sheet1"];
                int count = 0;

                string userinfo="";
                 foreach (DataRow row in tb.Rows)
                {
                    //拼接用户信息
                    if (count==0) {
                        userinfo += string.Format("('{0}','{1}','{2}','{3}','{4}')", row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString(), row[4].ToString());
                    }
                    else{
                        userinfo += string.Format(",('{0}','{1}','{2}','{3}','{4}')", row[0].ToString(), row[1].ToString(), row[2].ToString(), row[3].ToString(), row[4].ToString());
                    }
                    count++;
                }
                //三、数据库处理
                //获取数据库连接字符串
                string connStr = ConfigurationManager.ConnectionStrings["sqlConnStr"].ConnectionString;
                //构建sql语句
                string sqlStr = string.Format(@"INSERT INTO UserInfo (UserName, UserPwd, UserSex, Email,Tel) VALUES{0};", userinfo);
                int rowInsert = 0;
                //连接数据库
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    using (SqlCommand cmd = new SqlCommand(sqlStr,conn))
                    {
                        conn.Open();
                        rowInsert = cmd.ExecuteNonQuery();
                    }//end using SqlCommand
                }//end using SqlConnection
                if (rowInsert > 0)
                {
                    labTips.Text = string.Format("上传成功,成功导入{0}条用户记录", rowInsert); ;
                }
                else {
                    labTips.Text = "导入失败!";
                }
            }
            catch (Exception ex)
            {
                labTips.Text="excel文件读取失败,请检查excel表单内容和格式!";
            }
            finally
            {
                ole.Close();
            }
        }

在这里插入图片描述

  • 13
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 32
    评论
评论 32
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值