0

这是虔诚的

这是excel上传到sql数据库的代码

protected void btnupload_Click(对象发送者,EventArgs e){

  //string name = ddloutlet.SelectedValue.ToString ();
  //cal
   try
   {

       System.IO.FileInfo file = new System.IO.FileInfo(fileupload1.PostedFile.FileName);
       string fname = file.Name.Remove((file.Name.Length - file.Extension.Length), file.Extension.Length);
       fname = fname + DateTime.Now.ToString("_ddMMyyyy_HHmmss") + file.Extension;
       fileupload1.PostedFile.SaveAs(Server.MapPath("locations/") + fname);
       string filexetion = file.Extension;
       if ( filexetion == ".xlsx" )
       {
          excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + Server.MapPath ( "locations/" ) + fname + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;\"";
       }
       else if ( filexetion == ".xls" )
       {
          excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Server.MapPath ( "locations/" ) + fname + ";" + "Extended Properties=\"Excel 8.0;HDR=Yes; \"";
       }
       OleDbConnection connection = new OleDbConnection(excelConnectionString);
       OleDbCommand command = new OleDbCommand("Select * FROM [Sheet1$]", connection);
       connection.Open();
       OleDbDataReader dr = command.ExecuteReader();
       SqlConnection conn = new SqlConnection(strconnection);
       conn.Open();
       try
       {
           if (dr.Read() == true)
           {
               while (dr.Read())
               {
                   string locationname = dr["Location Name"].ToString();
                   string status = dr["Status"].ToString();
                   if (locationname != "" && status != "")
                   {
                       string query = " select locationname from tbllocations where locationname='" + locationname + "' and outletid='" + Session["outlet_id"].ToString() + "'";
                      // conn.Open();
                       SqlCommand cmdquery = new SqlCommand(query, conn);
                      SqlDataReader drreader;
                      drreader = cmdquery.ExecuteReader();
                       if (drreader.Read())
                       {

                           c = true;
                           ssss = ssss + locationname + ",";
                          // ss = ssss.Split(',');
                       }
                       else
                       {
                           drreader.Close();
                           string qryprduct = "insert into tbllocations(locationname,status,outletid,cityid)values('" + locationname + "','" + status + "','" + Session["outlet_id"].ToString() + "','" + Session["cityid"].ToString() + "')";
                           SqlCommand cmd1 = new SqlCommand(qryprduct, conn);
                           conn.Close();
                           conn.Open();
                           cmd1.ExecuteNonQuery();
                           lblerror1.Visible = true;
                           lblerror1.Text = "Locations uploaded Sucess";
                           //conn.Close();
                       }
                       drreader.Close();
                   }
               }
               // connection.Close (); conn.Close ();
           }
           else
           {
               lblerror1.Text = "There is a empty excel sheet file,plz check";
               lblerror1.Visible = true;
           }
       }
       catch (Exception ex)
       {
           lblerror1.Visible = true;
           lblerror1.Text = "Plz check the excel file formate";
       }
       finally
       {
           connection.Close(); conn.Close();
           bind();
           if (c == true)
           {
               lblerror1.Visible = true;
               lblerror1.Text = "In excel this loactions are already exist. Please check,";
               //for (int i = 0; i < ss.Length; i++)
               //{
                   lblerror3.Visible = true;
                   lblerror3.Text = ssss;
               //}
           }
       }
   }
   catch
   {
   }

}

上面的代码上传工作,但在 excel 第一条记录没有上传,请告诉我是什么问题,请给我建议。

excel数据是

位置名称 状态 test1 1 test2 1 test3 1 test4 0 test5 1 test6 0 test7 1 test8 0 test9 1 test10 1

谢谢

普拉迪普

4

1 回答 1

0

您需要删除

if (dr.Read() == true)

因为它紧随其后的是

while (dr.Read())

其中每一个都将读取一条记录,第一个将跳过文件的第一行

于 2012-12-11T12:07:13.077 回答