zoukankan      html  css  js  c++  java
  • asp.net将本地Excel上传到服务器并把数据导入到数据库

    前台代码: 

      <td class="formLabel">
                    批量修改:
                    </td>
                     <td  class="formInput">
                    <asp:FileUpload ID="FileUpload1" runat="server"/>
                    <asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="上傳" CssClass="button3"/>
                    </td>

    后台代码

     protected void Button3_Click(object sender, EventArgs e)
            {
                if (FileUpload1.HasFile == false)
                {
                    WebUtils.Alert(this, "請選擇Excel文件!", "StorMaintain.aspx");
                    return;
    
                }
                string IsXLS = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();
                if (IsXLS != ".xls")
                {
    
                    WebUtils.Alert(this, "只能選擇Excel文件!", "StorMaintain.aspx");
    
                    return;//当选择的不是Excel文件时,返回
    
                }
                         SqlConnection conn = new SqlConnection("server=10.56.10.21;database=MTLBPM;uid=sa;pwd=@seshMTLK2");
                    conn.Open();
                    //string strpath = FileUpload1.PostedFile.FileName.ToString();
    
                    //string filename = FileUpload1.FileName;
                   //存取的文件路径
                    string strpath = this.Server.MapPath("..\..\Upload\") + FileUpload1.FileName;
                    string filename = FileUpload1.FileName;
                    FileUpload1.PostedFile.SaveAs(strpath);
                    FileUpload1.Dispose();
    
                    DataSet ds = ExcelDs(strpath, filename);
              
                DataRow[] dr = ds.Tables[0].Select();
    
                int rowsnum = ds.Tables[0].Rows.Count;
               
                    if (rowsnum == 0)
                    {
    
                        WebUtils.Alert(this, "Excel表为空!", "StorMaintain.aspx");  //当Excel表为空时,对用户进行提示并跳转到相应页面   
    
                    }
    
                    else
                    {
                        for (int i = 0; i < dr.Length; i++)
                        {
                            //Excel表所对应的栏位,只能是英文,中文栏位报错(不知道为什么?)
                       string tFacPartNum, tPrice, tPN3, tCustomer;
                            tFacPartNum = dr[i]["FacPartNum"].ToString().Trim();
                            tPrice = dr[i]["price"].ToString().Trim();
                            tPN3 = dr[i]["3PN"].ToString().Trim();
                            tCustomer = dr[i]["Customer"].ToString().Trim();
                            string sqlcheck = "select count(0) num from dbo.SD_StorAmount where FacPartNum='" + tFacPartNum + "'";
                            bool ch = check(sqlcheck);
                             //判断厂内料号是否存在
                            if (ch)
                            {
                          //为false则插入数据
                                string insertStr1 = "insert into dbo.SD_StorAmount(FacPartNum,Price,PN3,Customer) values('" + tFacPartNum + "','" + tPrice + "','" + tPN3 + "','" + tCustomer + "')";
                                SqlCommand cmd = new SqlCommand(insertStr1, conn);
    
                                cmd.ExecuteNonQuery();
    
                            }
    
                            else
                            {
                                string updateStr = "update dbo.SD_StorAmount set Price='" + tPrice + "' where  FacPartNum='" + tFacPartNum + "'";
                                SqlCommand cmd = new SqlCommand(updateStr, conn);
                                cmd.ExecuteNonQuery();
                            }
    
                       }
    
                        try
                        {
    
    
                            WebUtils.Alert(this, "保存成功!", "StorMaintain.aspx");
    
    
                        }
                        catch (Exception ee)
                        {
    
                            WebUtils.Alert(this, ee.Message);
                        }
    
                    }
                    conn.Close();
             
            }
            //导入功能
            public DataSet ExcelDs(string filenameurl, string table)
            {
                        // 此语句为Excel2003适用
                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);
    
                OleDbDataAdapter odda = new OleDbDataAdapter("select * from [Sheet1$]", conn);
    
                DataSet ds = new DataSet(); odda.Fill(ds, table);
                return ds;          
      
    
            }
            //Check 方法判断是否存在记录
            public bool check(string str)
            {
                  //
                using (SqlConnection conn = new SqlConnection("server=10.56.10.21;database=MTLBPM;uid=sa;pwd=@seshMTLK2"))
                {
    
                    using (SqlCommand cmd = new SqlCommand(str, conn))
                    {
    
                        conn.Open();
    
                        //通过ExecuteScalar()方法返回count值
    
                        int n = (int)cmd.ExecuteScalar();
    
                        return n > 0 ? false : true;
    
                                    }
    
                }
    
            }

    在服务器上要确保已安装了Excel,并且具有读写目标文件夹的权限。

  • 相关阅读:
    关闭弹出窗体,刷新父页面
    Oracle 导出部分表结构,以及导入
    ORCLE报错解决(ora01747:无效的用户.表.列,表.列)
    PL/SQL Developer使用技巧
    自定义table
    Array查询数组中是否包含指定字符
    水晶报表去掉多余小数点
    HttpHandler HttpModule入门篇
    窗口类名无效 错误 解决方法
    2020.10.15
  • 原文地址:https://www.cnblogs.com/prvin/p/3240424.html
Copyright © 2011-2022 走看看