InsertSQL = "INSERT INTO Applet ([username],[sex],[moble],[Phone],[Address],[Funds],[Funds2],[Credential],[Credit],[Notes],[creat_time],[Status]) VALUES (@username,@sex,@moble,@Phone,@Address,@Funds,@Funds2,@Credential,@Credit,@Notes,@creat_time,@Status)";
            try
            {
                
                
                for (int i = 1; i < dt.Rows.Count;i++ )
                {
                    Num = Num + 1;
                    SqlParameter[] arParams = new SqlParameter[13]; 
                    if (dt.Rows[i][0].ToString()!="")
                    {
                        arParams[1] = new SqlParameter("@username", dt.Rows[i][0].ToString());
                    }
                    else                    {
                        arParams[1] = new SqlParameter("@username",DBNull.Value );
                    
                    }                    if (dt.Rows[i][1].ToString() != "")
                    {
                        arParams[2] = new SqlParameter("@sex", dt.Rows[i][1].ToString());
                    }
                    else
                    {
                        arParams[2] = new SqlParameter("@sex", DBNull.Value);
                       
                    }                    if (dt.Rows[i][2].ToString() != "0")
                    {
                        arParams[3] = new SqlParameter("@moble", dt.Rows[i][2].ToString());
                    }
                    else
                    {
                        arParams[3] = new SqlParameter("@moble", DBNull.Value);                    }
                    if (dt.Rows[i][3].ToString() != "")
                    {
                        arParams[4] = new SqlParameter("@Phone", dt.Rows[i][3].ToString());
                    }
                    else
                    {
                        arParams[4] = new SqlParameter("@Phone", DBNull.Value);                    }
                    if (dt.Rows[i][4].ToString() != "")
                    {
                        arParams[5] = new SqlParameter("@Address", dt.Rows[i][4].ToString());
                    }
                    else
                    {
                        arParams[5] = new SqlParameter("@Address", DBNull.Value);                    }
                    if (dt.Rows[i][5].ToString() != "0")
                    {
                        arParams[6] = new SqlParameter("@Funds", dt.Rows[i][5].ToString());
                    }
                    else
                    {
                        arParams[6] = new SqlParameter("@Funds", DBNull.Value);                    }
                    if (dt.Rows[i][6].ToString() != "0")
                    {
                        arParams[7] = new SqlParameter("@Funds2", dt.Rows[i][6].ToString());
                    }
                    else
                    {
                        arParams[7] = new SqlParameter("@Funds2", DBNull.Value);                    }
                    if (dt.Rows[i][7].ToString() != "0")
                    {
                        arParams[8] = new SqlParameter("@Credential", dt.Rows[i][7].ToString());
                    }
                    else
                    {
                        arParams[8] = new SqlParameter("@Credential", DBNull.Value);                    }
                    if (dt.Rows[i][8].ToString() != "")
                    {
                        arParams[9] = new SqlParameter("@Credit", dt.Rows[i][8].ToString());
                    }
                    else
                    {
                        arParams[9] = new SqlParameter("@Credit", DBNull.Value);                    }                    if (dt.Rows[i][9].ToString() != "")
                    {
                        arParams[10] = new SqlParameter("@Notes", dt.Rows[i][8].ToString());
                    }
                    else
                    {
                        arParams[10] = new SqlParameter("@Notes", DBNull.Value);                    }
                   
                    arParams[11] = new SqlParameter("@creat_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                    arParams[12] = new SqlParameter("@Status","1");
                    SqlHelper.ExecuteNonQuery(tran, CommandType.Text, InsertSQL, arParams);
                }              
             
                tran.Commit();
                return Num;
            }
            catch (Exception ex)
            {
                tran.Rollback();
                return -1;
            }
            finally
            {
               
                    con.Close();
                
            }
            return Num;
        }
    }
}[/code]
...我这个读取excel表格里的数据并插入数据库,他不读取第一行的excel数据,只要第一行有十列就行...从第二行开始读...
现在这个很麻烦,不是所有excel第一行都有10行...怎么办,如果不是10行他就暴错...

解决方案 »

  1.   

    建议将excel转换成dbf,或者MDB之类,将数据格式处理清晰之后再来做insert
      

  2.   

       private DataTable ReadExcel()
            {
                string ExcelPath = OpenFile();
                DataTable dt = new DataTable();
                OleDbConnection conn = excelConn(ExcelPath);
      
                try
                {
                    
                        string tableName = getFirsttableName(ExcelPath);
                        conn.Open();
                        string strCom = " SELECT * FROM [" + tableName + "]";///SQL操作语句,就是说:取得所有数据从Content
                        OleDbDataAdapter myCommand = new OleDbDataAdapter(strCom, conn);
                        DataSet myDataSet = new DataSet();///建立新的数据集myDataSet
                        myCommand.Fill(myDataSet);///填充数据集                    dt = myDataSet.Tables[0];//Exceltable
                        Int32 columnNum = myDataSet.Tables[0].Columns.Count;///读取列数并赋值给columnNum
                        Int32 rowNum = myDataSet.Tables[0].Rows.Count;///读取行数并赋值给rowNum                    Int32 resultRowNum = columnNum - 1;///读取结果行数
                                }
                catch (System.Exception e)
                {                MessageBox.Show("Read Excel is Error!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    System.Environment.Exit(0);
                }
                finally
                {
                    conn.Close();
                }
                return dt;
            
            }
    这代码操作excel的.看下哪里出错了,只读取第一行判断了?
      

  3.   

    如果这张excel里第一行是8行的话,他会暴出无法找到第列8
    就是从最上面发的代码里暴的
      

  4.   


    InsertSQL = "INSERT INTO Applet ([username],[sex],[moble],[Phone],[Address],[Funds],[Funds2],[Credential],[Credit],[Notes],[creat_time],[Status]) VALUES (@username,@sex,@moble,@Phone,@Address,@Funds,@Funds2,@Credential,@Credit,@Notes,@creat_time,@Status)"; 
                try 
                { 
                    

                    if(dt.Cells.Count!=10)
                   {
                   MessageBox.Show("Excel文件没有10列");
                   return -1;
                   }
                    for (int i = 1; i < dt.Rows.Count;i++ ) 
                    { 
                        Num = Num + 1; 
                        SqlParameter[] arParams = new SqlParameter[13]; 
                        if (dt.Rows[i][0].ToString()!="") 
                        { 
                            arParams[1] = new SqlParameter("@username", dt.Rows[i][0].ToString()); 
                        } 
                        else                     { 
                            arParams[1] = new SqlParameter("@username",DBNull.Value ); 
                        
                        }                     if (dt.Rows[i][1].ToString() != "") 
                        { 
                            arParams[2] = new SqlParameter("@sex", dt.Rows[i][1].ToString()); 
                        } 
                        else 
                        { 
                            arParams[2] = new SqlParameter("@sex", DBNull.Value); 
                          
                        }                     if (dt.Rows[i][2].ToString() != "0") 
                        { 
                            arParams[3] = new SqlParameter("@moble", dt.Rows[i][2].ToString()); 
                        } 
                        else 
                        { 
                            arParams[3] = new SqlParameter("@moble", DBNull.Value);                     } 
                        if (dt.Rows[i][3].ToString() != "") 
                        { 
                            arParams[4] = new SqlParameter("@Phone", dt.Rows[i][3].ToString()); 
                        } 
                        else 
                        { 
                            arParams[4] = new SqlParameter("@Phone", DBNull.Value);                     } 
                        if (dt.Rows[i][4].ToString() != "") 
                        { 
                            arParams[5] = new SqlParameter("@Address", dt.Rows[i][4].ToString()); 
                        } 
                        else 
                        { 
                            arParams[5] = new SqlParameter("@Address", DBNull.Value);                     } 
                        if (dt.Rows[i][5].ToString() != "0") 
                        { 
                            arParams[6] = new SqlParameter("@Funds", dt.Rows[i][5].ToString()); 
                        } 
                        else 
                        { 
                            arParams[6] = new SqlParameter("@Funds", DBNull.Value);                     } 
                        if (dt.Rows[i][6].ToString() != "0") 
                        { 
                            arParams[7] = new SqlParameter("@Funds2", dt.Rows[i][6].ToString()); 
                        } 
                        else 
                        { 
                            arParams[7] = new SqlParameter("@Funds2", DBNull.Value);                     } 
                        if (dt.Rows[i][7].ToString() != "0") 
                        { 
                            arParams[8] = new SqlParameter("@Credential", dt.Rows[i][7].ToString()); 
                        } 
                        else 
                        { 
                            arParams[8] = new SqlParameter("@Credential", DBNull.Value);                     } 
                        if (dt.Rows[i][8].ToString() != "") 
                        { 
                            arParams[9] = new SqlParameter("@Credit", dt.Rows[i][8].ToString()); 
                        } 
                        else 
                        { 
                            arParams[9] = new SqlParameter("@Credit", DBNull.Value);                     }                     if (dt.Rows[i][9].ToString() != "") 
                        { 
                            arParams[10] = new SqlParameter("@Notes", dt.Rows[i][8].ToString()); 
                        } 
                        else 
                        { 
                            arParams[10] = new SqlParameter("@Notes", DBNull.Value);                     } 
                      
                        arParams[11] = new SqlParameter("@creat_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); 
                        arParams[12] = new SqlParameter("@Status","1"); 
                        SqlHelper.ExecuteNonQuery(tran, CommandType.Text, InsertSQL, arParams); 
                    }               
                
                    tran.Commit(); 
                    return Num; 
                } 
                catch (Exception ex) 
                { 
                    tran.Rollback(); 
                    return -1; 
                } 
                finally 
                { 
                  
                        con.Close(); 
                    
                } 
                return Num; 
            } 
        } 

      

  5.   

    读写Excel,就使用专门读写Excel的比较有针对性的API,例如Microsoft.Office.Interop系列接口类库。
      

  6.   

    其实解决方法很简单try 
        { 
    if (dt.Rows[i][8].ToString() != "") 
                        { 
                            arParams[9] = new SqlParameter("@Credit", dt.Rows[i][8].ToString()); 
                        } 
                        else 
                        { 
                            arParams[9] = new SqlParameter("@Credit", DBNull.Value);                     } } 
    catch (System.Exception e)
                {
    arParams[9] = new SqlParameter("@Credit", DBNull.Value); }一个一个的捕获就好了啊就不会跳过了 同样添加