0

我正在将 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;

                }
4

3 回答 3

1

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

于 2012-11-01T09:58:09.740 回答
1

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

正如@anthony-grist 所说,也有可能数组为空,因此第一项将超出数组边界。

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

于 2012-11-01T10:02:32.427 回答
0

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

If(!String.IsNullOrEmpty(a)){
    If(Char.IsLetter(a[0])){
          Label12.Text = "CAPITAL";
          break;
    }
}
于 2012-11-01T10:20:05.253 回答