Excel中文件插入到数据库

/判断文件上传是否成功
    private bool Upload(string uploadPath)
    {
        try
        {
            this.uploadFile.PostedFile.SaveAs(uploadPath);    //上传Excel并保存,在这里判断是否保存成功
            return true;
        }
        catch
        {
            return false;
        }
    }

    //文件上传
    protected void btnUpload_Click(object sender, EventArgs e)
    {
        //获取文件完整路径
        string fullName = this.FileUpload1.PostedFile.FileName;
        if (string.IsNullOrEmpty(fullName))
        {
            Response.Write("请选择要上传的文件!");
            return;
        }
        //获取上传文件的大小
        int fileLength = this.FileUpload1.PostedFile.ContentLength;
        if (fileLength > 512000)
        {
            Response.Write("文件超过500K,无法上传!");
            return;
        }

        FileInfo fi = new FileInfo(fullName);
        //获取该文件的扩展名
        string fileExt = fi.Extension;
        if (!fileExt.ToLower().Equals(".xls"))
        {
            Response.Write("上传文件格式不正确!");
            return;
        }

        string uploadPath = Page.MapPath(@"uploadfile/经销商设置表.xls");
        bool upSuccess = Upload(uploadPath);
        if (!upSuccess)
        {
            Response.Write("文件上传失败,请检查文件的执行权限!");
            return;
        }
        DataTable dt = GetExcelTable(uploadPath);
        if (dt == null)
        {
            Response.Write("文件读取失败!");
            return;
        }
        else
        {
            //执行导入
            DataTable dts = GetExcelTable(uploadPath);
            try
            {
                int s = 0;//成功
                int f = 0;//失败
                if (dts != null && dts.Rows.Count > 0)
                {
                    for (int i = 0; i < dts.Rows.Count; i++)
                    {
                        // 添加经销商信息
                        if (AddValidate(dt.Rows[i]))
                        {
                            def.Cid = Session[Constant.SS_CID].ToString();
                            if (!string.IsNullOrEmpty(dt.Rows[i][1].ToString()))
                            {
                                def.DealerName = dt.Rows[i][1].ToString();
                            }
                            def.Address = dt.Rows[i][8].ToString();
                            def.PostCode = dt.Rows[i][9].ToString();
                            def.LinkMan = dt.Rows[i][10].ToString();
                            def.LinkTel = dt.Rows[i][11].ToString();
                            def.MobileTel = dt.Rows[i][12].ToString();
                            def.Fax = dt.Rows[i][13].ToString();
                            def.Email = dt.Rows[i][14].ToString();
                            if (!string.IsNullOrEmpty(dt.Rows[i][6].ToString()) && dt.Rows[i][6].ToString() == "是")
                            {
                                def.DStatus = "1";
                            }
                            else
                            {
                                def.DStatus = "0";
                            }
                            if (!string.IsNullOrEmpty(dt.Rows[i][7].ToString()) && dt.Rows[i][7].ToString() == "是")
                            {
                                def.AllowOut = 1;
                            }
                            else
                            {
                                def.AllowOut = 0;
                            }

                            int nM = dealer.AddDealerMsg(def);
                            if (nM == 0)
                            {
                                this.txtarea.InnerText += "/n第" + (i + 1) + "条添加失败/n";
                                f++;
                            }
                            else
                            {
                                s++;
                            }
                        }
                        else
                        {
                            this.txtarea.InnerText += "/n第" + (i + 1) + "条添加失败  " + Label3.Text + "/n";
                            f++;
                        }
                    }
                }
                else
                {
                    Response.Write("导入的Excel内无数据!");
                    return;
                }
                if (s > 0 || f > 0)
                {
                    this.Label3.Text = "其中成功插入" + s + "条,失败" + f + "条!";
                }
                if (f > 0)
                    this.LinkButton2.Visible = true;
                else
                    this.LinkButton2.Visible = false;

                this.Label3.Visible = true;
                this.note.Visible = true;
                return;
            }
            catch
            {
                Response.Write("操作失败!");
            }
        }

    }

    //读取Excel文件
    private DataTable GetExcelTable(string uploadPath)
    {
        DataSet ds = new DataSet();
        string Xls_ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + uploadPath + ";Extended Properties='Excel 8.0;HDR=YES;IMEX=1';";//HDR为yes 则第一数据行为列名,为no 则自动为列加列名F1  F2  F3
        OleDbConnection conn = new OleDbConnection(Xls_ConnStr);
        try
        {
            conn.Open();
            string sql_str = "select * from [Sheet1$]";
            OleDbDataAdapter oda = new OleDbDataAdapter(sql_str, conn);
            oda.Fill(ds, "excel_date");
            conn.Close();
        }
        catch
        {
            if (conn.State == ConnectionState.Open)
            {
                conn.Close();
            }
            return null;
        }
        finally
        {
            conn.Dispose();
        }

        if (ds == null)
        {
            return null;
        }

        if (ds.Tables.Count < 1)
        {
            return null;
        }

        return ds.Tables[0];
    }

    private bool AddValidate(DataRow dr)
    {
        return true;//验证输入的合法性
    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值