从excel表读取时索引超出了数组的范围

时间:2012-11-01 09:56:24

标签: c# asp.net sql

我正在将excelsheet导入sqlserver数据库,但excel中有三列:

id|data|passport

我想确保所有护照都以字母开头 错误在:

if (a[0]>= 'A' && a[0] <= 'Z' && a[0] !='0' )

错误:

  

索引超出了数组的范围。

          for (int i1 = 0; i1 < dt7.Rows.Count; i1++)
            {

                if (dt7.Rows[i1]["passport"]==null)
                {
                    dt7.Rows[i1]["passport"] = 0;

                }

                string a = Convert.ToString(dt7.Rows[i1]["passport"]);

                //char a1 = a[0];

                if (a[0]>= 'A' && a[0] <= 'Z' && a[0] !='0' )
                {
                    Label12.Text = "CAPITAL";
                    break;
                }
                else
                {
                    Label12.Text = "notgood";


                    flag = flag + 1;

                }

3 个答案:

答案 0 :(得分:1)

听起来a引用了一个数组,因此在索引0处没有元素。在尝试访问第一个元素之前,您需要检查数组是否为空。

答案 1 :(得分:1)

当然,word和excel范围内的对象是基于1的数组,并且在访问索引0时会抛出超出范围的异常。我相信情况仍然如此。

正如@ anthony-grist所说,也有可能数组是空的,因此第一项将在数组边界之外。

我建议您测试数组的长度,并从索引1开始访问。

答案 2 :(得分:0)

为什么不像这样修改你的条件

If(!String.IsNullOrEmpty(a)){
    If(Char.IsLetter(a[0])){
          Label12.Text = "CAPITAL";
          break;
    }
}