用datatable,倒入excel到sql。共一万多行数据,8000多导入还没问题,怎么再多就出错呢,就像找不到网页一样,也没有错误提示。 单独导入8000行后的数据,也没问题,可以确认excel数据格式没有问题。

解决方案 »

  1.   

    是excel有限制,不是sql server有限制,excel的限制好象为65535.
      

  2.   

    就能倒入8340行,到了8341行,就不行。都单独试了数据没问题,而且excel多余空白行都删除了,不会超过65535。
      

  3.   

    是數據庫反應超時,IIS這邊就直接斷開鏈結了 沒任何異常提示,你可以在c#這邊寫一個循環嗎例如:int irows = excel.rows.count;
    int unit= (irows-irows%5000)/5000+1; 
    for(int i=0;i<unit;i++)
    {
      //這個地方就寫取得excel的行數 從1---5000,然後遞加.
    }每次向數據庫發送5000筆
      

  4.   

    一超过8340行,马上就显示"can not display the webpage",出现的很快,应该不是timeout没有反应。
      

  5.   


    这个问题是由于数据库反应时间过长引起的..你可以用下面代码尝试.int irows = excel.rows.count;
    int h = (irows-irows%5000)/5000 + 1;
    for(int i=0;i< h;i++)
    {
      //这个位置每次取5000笔放到数据表.
    }
      

  6.   

    只要不超出 EXCEL 的最大允许行数65535 就可以。
      

  7.   


    也还是不行,还是一样的打不开。不像是timeout问题。另外用了你这个语句,只能导入倆条记录,应该加个循环阿。
      

  8.   

    代码如下:帮忙看看,又没有什么限制,比如说datatable, int,是不是对数值大小有限制阿        public void ImportMonthlyDataToSQL(string filepath) //import monthly excel to sql
            {            try
                {
                    string connectionstr = ConfigurationManager.ConnectionStrings["DB"].ConnectionString;
                    SqlConnection conn;
                    conn = new SqlConnection(connectionstr);
                    conn.Open();                DataTable dt = getexcel(filepath);
                  DeleteBlankRow(dt);  //delete empty rows in excel
                 // Response.Write(dt.Rows.Count);                string StrDataYM = YearList.SelectedValue.ToString() + MonthList.SelectedValue.ToString();                string sqlcheck = "select * from VolumeMonthly where DataYM= '" + StrDataYM  + "'";
                    SqlCommand cmdcheck = new SqlCommand(sqlcheck, conn);                SqlDataReader rdr1 = cmdcheck.ExecuteReader();
                    bool result = rdr1.HasRows;
                    rdr1.Close();                if (result)
                    {                  Response.Write("<script language=javascript>alert('The data of "+YearList.Text  +"_"+MonthList.Text  +" already exist! Please select the correct Year and Month code !')</script>");
                       
                        
                                            return;                    
                    }
                    string StrItemNM = "";
                    string  intqty = "0";
                    string StrSeason = "";
                    string StrKey = "";
                    string strbuymth = "";
                    string strbuyyear = "";
                                    for (int i = 0; i < dt.Rows.Count; i++)
                                   {                     StrItemNM = dt.Rows[i]["ITEM"].ToString().Replace("'", "''");
                        if ( dt.Rows[i]["QTY"].ToString ().Length >0)
                        {
                            intqty=dt.Rows[i]["QTY"].ToString ();
                        }
                       StrKey = dt.Rows[i]["ITEM"].ToString().Trim() +"-"+StrDataYM .ToString ().Trim ();
                        strbuymth = Convert.ToDateTime(dt.Rows[i]["buydt"]).ToString("MMM");
                
                       strbuyyear =Convert.ToDateTime (dt.Rows [i]["buydt"].ToString ()).ToString ("yy");
                       switch (strbuymth)
                       {                       case "Jan":                           StrSeason = "AA" + strbuyyear;
                               break;                       case "Feb":                           StrSeason = "BB" + strbuyyear;
                               break;
                           case "Mar":                           StrSeason = "BB" + strbuyyear;
                               break;                       case "Apr":                           StrSeason = "BB" + strbuyyear;
                               break;                       case "May":                           StrSeason = "BB" + strbuyyear;
                               break;                       case "Jun":                           StrSeason = "BB" + strbuyyear;
                               break;
                           case "Jul":                           StrSeason = "BB" + strbuyyear;
                               break;                       case "Aug":                           StrSeason = "CC" + (Convert.ToInt32(strbuyyear)+1).ToString ();
                               break;                       case "Sep":                           StrSeason = "CC" + (Convert.ToInt32(strbuyyear) + 1).ToString();
                               break;                       case "Oct":                           StrSeason = "CC" + (Convert.ToInt32(strbuyyear) + 1).ToString();
                               break;
                           case "Nov":                           StrSeason = "CC" + (Convert.ToInt32(strbuyyear) + 1).ToString();
                               break;
                           case "Dec":                           StrSeason = "CC" + (Convert.ToInt32(strbuyyear) + 1).ToString();
                               break;                   }
                                  string sqlinsert = "INSERT INTO [VolumeMonthly] ([Style1],[Style2],[Item],[Season],[Factory],[CO],[CAT],[BUYDT],[QTY],[DataYM],[Dest],[StyleSeaFct])  VALUES  ('" + dt.Rows[i]["STYLE"].ToString() + "','" + dt.Rows[i]["ITEM"].ToString() + "','" + StrItemNM.ToString() + "','" + StrSeason + "','" + dt.Rows[i]["PLAN"].ToString() + " ','" + dt.Rows[i]["CO"].ToString() + "','"+dt.Rows [i]["CAT"].ToString()+"','" + dt.Rows [i]["BUYDT"].ToString ()+ "','" + intqty  + "','" + StrDataYM.ToString() + "','"+dt.Rows [i]["DEST"].ToString ()+"','"+ StrKey +"')";                    SqlCommand cmd = new SqlCommand(sqlinsert, conn);                    cmd.ExecuteNonQuery();                }
                    conn.Close();                Response.Write("<script language=javascript>alert('" + StrDataYM  + " Data(total " + dt.Rows.Count + " rows) is imported successfully!')</script>");
                    Button6.Visible = true;
                }
                catch (Exception ex)       //捕捉异常
                {
                    Response.Write(ex.Message);
                    
                }         }
      

  9.   

    知道了,是fileupload控件上传文件大小限制,不能超过4MB。
    对于excel导入sql,我是将文件上传到服务器,然后再导入,有没有别的办法?我不想修改web.config里的上传文件大小限制。