繁体   English   中英

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

[英]Index was outside the bounds of the array while reading from excelsheet

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

                }

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM