我是根据13个复选框来选择字段从而在EXCEL导入数据如果按顺序来,EXCEL 1-13字段都有数据也就是A-M,在程序里随便勾取复选框都能进行导入但是现在有个问题是如果,EXCEL里只有1-4,A-D这4个字段有数据,但我在程序中勾选的是1,3,5,11.
...这样就会出现插入数据库的只有1和3字段...5,11为NULL..我是根据每个复选框的Tag来判断选择的是哪个复选框

解决方案 »

  1.   

    没看懂,你自己也说了,Excel中就4列,你选择了第5列,那插入数据库的当然就是空了,不是很正确吗?你想干嘛啊?
      

  2.   

    那还不简单,你先从Excel读出那些列是可以选的,然后再把程序不可选的CheckBox禁用掉不就完了。
      

  3.   

    这个要求,其实很没有道理的,一定要做:
    就是先读Excel 找到最大不为空的列,然后在Disable到超出列的复选框。但是这个完全就是没有意义的做法。因为你至少要循环完全部的Excel列。然后才能得出最大不为空的列。
      

  4.   


    没你说的那么烦,一个循环搞定了,最大列他是知道的不就13个嘛,Excel中读出空列禁用对应的Checkbox即可。
      

  5.   


    没你说的那么烦,一个循环搞定了,最大列他是知道的不就13个嘛,Excel中读出空列禁用对应的Checkbox即可。
      

  6.   

     public int InsertApplet(DataTable dt,List<string> lstr,string from)
            {
                int Num = 0;
                string InsertSQL;
                SqlTransaction tran;
                con = new SqlConnection(DbConnStr());
                con.Open();            tran = con.BeginTransaction();
                InsertSQL = "INSERT INTO "+from.ToString()+" ([username],[sex],[moble],[Phone],[City],[CardType],[Address],[Funds],[Funds2],[Credential],[Credit],[Notes],[ComeFrom],[creat_time],[Status]) VALUES (@username,@sex,@moble,@Phone,@City,@CardType,@Address,@Funds,@Funds2,@Credential,@Credit,@Notes,@ComeFrom,@creat_time,@Status)";
                try
                {
                                    if (dt.Rows.Count > 1)
                    {                 for (int i = 0; i < dt.Rows.Count;i++ )
                    {
                       
                        Num = Num + 1;
                        SqlParameter[] arParams = new SqlParameter[18];
                        if (dt.Columns.Count>0 &&dt.Rows[i][0].ToString() != "" && lstr.Contains("0") )
                        {
                            arParams[1] = new SqlParameter("@username", dt.Rows[i][0].ToString());
                        }
                        else                    {
                            arParams[1] = new SqlParameter("@username",DBNull.Value );
                        
                        }                    if (dt.Columns.Count > 1&&dt.Rows[i][1].ToString() != "" && lstr.Contains("1") )
                        {
                            arParams[2] = new SqlParameter("@sex", dt.Rows[i][1].ToString());
                        }
                        else
                        {
                            arParams[2] = new SqlParameter("@sex", DBNull.Value);
                           
                        }                    if ( dt.Columns.Count > 2&&dt.Rows[i][2].ToString() != "" && lstr.Contains("2"))
                        {
                            arParams[3] = new SqlParameter("@moble", dt.Rows[i][2].ToString());
                        }
                        else
                        {
                            arParams[3] = new SqlParameter("@moble", DBNull.Value);                    }
                        if (dt.Columns.Count > 3&&dt.Rows[i][3].ToString() != "" && lstr.Contains("3") )
                        {
                            arParams[4] = new SqlParameter("@Phone", dt.Rows[i][3].ToString());
                        }
                        else
                        {
                            arParams[4] = new SqlParameter("@Phone", DBNull.Value);                    } 
                        if (dt.Columns.Count > 4&&dt.Rows[i][4].ToString() != "" && lstr.Contains("4"))
                        {
                            arParams[5] = new SqlParameter("@City", dt.Rows[i][4].ToString());
                        }
                        else
                        {
                            arParams[5] = new SqlParameter("@City", DBNull.Value);                    }
                        if (dt.Columns.Count >5&& dt.Rows[i][5].ToString() != "" && lstr.Contains("5"))
                        {
                            arParams[6] = new SqlParameter("@CardType", dt.Rows[i][5].ToString());
                        }
                        else
                        {
                            arParams[6] = new SqlParameter("@CardType", DBNull.Value);                    }
                        if ( dt.Columns.Count>6&&dt.Rows[i][6].ToString() != "" && lstr.Contains("6") )
                        {
                            arParams[7] = new SqlParameter("@Address", dt.Rows[i][6].ToString());
                        }
                        else
                        {
                            arParams[7] = new SqlParameter("@Address", DBNull.Value);                    }
                        if (dt.Columns.Count>7&&dt.Rows[i][7].ToString() != "" && lstr.Contains("7") )
                        {
                            arParams[8] = new SqlParameter("@Funds", dt.Rows[i][7].ToString());
                        }
                        else
                        {
                            arParams[8] = new SqlParameter("@Funds", DBNull.Value);                    }
                        if (dt.Columns.Count>8&&dt.Rows[i][8].ToString() != "" && lstr.Contains("8") )
                        {
                            arParams[9] = new SqlParameter("@Funds2", dt.Rows[i][8].ToString());
                        }
                        else
                        {
                            arParams[9] = new SqlParameter("@Funds2", DBNull.Value);                    }
                        if (dt.Columns.Count>9&&dt.Rows[i][9].ToString() != "" && lstr.Contains("9") )
                        {
                            arParams[10] = new SqlParameter("@Credential", dt.Rows[i][9].ToString());
                        }
                        else
                        {
                            arParams[10] = new SqlParameter("@Credential", DBNull.Value);                    }
                        if (dt.Columns.Count>10&& dt.Rows[i][10].ToString() != "" && lstr.Contains("10"))
                        {
                            arParams[11] = new SqlParameter("@Credit", dt.Rows[i][10].ToString());
                        }
                        else
                        {
                            arParams[11] = new SqlParameter("@Credit", DBNull.Value);                    }                    if ( dt.Columns.Count >11&&dt.Rows[i][11].ToString() != "" && lstr.Contains("11") )
                        {
                            arParams[12] = new SqlParameter("@Notes", dt.Rows[i][11].ToString());
                        }
                        else
                        {
                            arParams[12] = new SqlParameter("@Notes", DBNull.Value);                    }
                        if (dt.Columns.Count >12&& dt.Rows[i][12].ToString() != "" && lstr.Contains("12"))
                        {
                            arParams[13] = new SqlParameter("@ComeFrom", dt.Rows[i][12].ToString());
                        }
                        else
                        {
                            arParams[13] = new SqlParameter("@ComeFrom", DBNull.Value);                    }
                       
                        arParams[14] = new SqlParameter("@creat_time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                        arParams[15] = new SqlParameter("@Status","1");
                        SqlHelper.ExecuteNonQuery(tran, CommandType.Text, InsertSQL, arParams);
                    
                    }
                    }              
                 
                    tran.Commit();
                    return Num;这是我判断的代码,该怎么改?
      

  7.   


    这就是他Excel中的数据有问题了,通常应该不会发生。
    不过这情况写程序肯定要考虑的,在插入数据库的地方遇到这样的行,直接放弃一行数据,给出提示,反正数据也不对。