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