C#把Excel导入数据库Sqlserver,webform版

WebForm 专栏收录该内容
1 篇文章 0 订阅

C#把Excel导入数据库Sqlserver,webform版

说明:此方法只能手动在数据库创建表和表格对应的列名才能把数据导入。
如需转载 请附上原文连接:https://blog.csdn.net/qq_40128550/article/details/89215065
详细代码如下:
前台:

  <form id="form1" runat="server">
  <asp:fileupload ID="fileId" runat="server"></asp:fileupload>
    <asp:Button ID="Button1" runat="server" Text="上传导入" 
        "Button1_Click1" />
    </form>

Aspx.cs

获取表格数据进行封装

        private void DataOperator(string fileName, string savePath)
        {

            //这里的Microsoft.ACE.OLEDB.12.0还有一种,这是由于EXCEL版本不同而定义的,具体可以搜索下。
            //此处报错需要安装AccessDatabaseEngine
            string myString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + savePath + fileName + ";Extended Properties=Excel 8.0";
            OleDbConnection oconn = new OleDbConnection(myString);
            oconn.Open();
            DataSet ds = new DataSet();
            OleDbDataAdapter oda = new OleDbDataAdapter("select * from [Sheet1$]", oconn);
            oda.Fill(ds);
            oconn.Close();
            DataSetOperator(ds, savePath + fileName);   //DataSet的数据,然后封装进去。
        }

操作数据进行导入

  private void DataSetOperator(DataSet ds, string filePath)  //数据正式进行操作,并导入数据库
        {
            SqlConnection conn = new SqlConnection("Server=.; User Id=sa; Pwd=123123; database=test; connection reset=false");  //数据库连接。
            conn.Open();
            SqlTransaction str = conn.BeginTransaction();//利用事务处理 防止中断  
            int k = 0;
            if (ds.Tables[0].Rows.Count < 1)
            {
                Response.Write("<script>alert('没有数据!')</script>");
                return;
            }
            try
            {
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    string sqlStr = "insert into Student(ID,Name,Sex)values";  //我这里要上传的EXCEL有27列,都跟下边匹配上,然后进行填充就可以。少的可以自己定义              
                    sqlStr += "('" + ds.Tables[0].Rows[i][0].ToString() + "',";
                    sqlStr += "'" + ds.Tables[0].Rows[i][1].ToString() + "',";
                    sqlStr += "'" + ds.Tables[0].Rows[i][2].ToString()+"')";
                    string d = sqlStr;
                    SqlCommand cmd = new SqlCommand(sqlStr, conn, str);
                    cmd.Transaction = str;
                    k += cmd.ExecuteNonQuery();
                }
                str.Commit();
            }
            catch (Exception ex)
            {
                Response.Write("发生异常,数据已回滚/n信息/n" + ex.Message);
                str.Rollback();
            }
            finally
            {
                Response.Write("上传成功" + k + "条");
                File.Delete(filePath);
            }
        }

调用

  private void FileOperatpr(string fileName, string savePath)
        {
            if (!Directory.Exists(savePath))
            {
                Directory.CreateDirectory(savePath);
            }
            if (File.Exists(savePath + fileName))
            {
                File.Delete(savePath + fileName);
            }
        }
        protected void Button1_Click1(object sender, EventArgs e)
        {

            string fileName = fileId.FileName;
            string savePath = Server.MapPath("~/file/");
            FileOperatpr(fileName, savePath);  //创建文件夹。
            fileId.SaveAs(savePath + fileName);  //保存(前台的FileUpload控件)
            DataOperator(fileName, savePath);  //开始传输数据
        }
  • 2
    点赞
  • 0
    评论
  • 8
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值