今天提取Excel中的数据到集合中,然后再将集合进行合并,以获取所有的数据再写入到Excel中,于是我创建了多个list集合,然后分别获取需要的数据,这里我们用了5个集合,z1、z2、z3、z4是分别从excel提取的数据,而z这是用来合并z1、z2、z3、z4中的数据的,在将其进行合并,结果出现异常了:
List<string> z1 = new List<string>();
List<string> z2 = new List<string>();
List<string> z3 = new List<string>();
List<string> z4 = new List<string>();
List<string> z = new List<string>();
for (int i = 3; i < ws2RowsCount; i++)
{
if ((ws2.Cells[i, 8]).Text != "")
{
string z11=ws2.Cells[i,3].Text;
z1.Add(z11);
}
if ((ws2.Cells[i, 9]).Text != "")
{
string z21 = ws2.Cells[i, 3].Text;
z2.Add(z21);
}
if ((ws2.Cells[i, 10]).Text != "")
{
string z31 = ws2.Cells[i, 3].Text;
z3.Add(z31);
}
if ((ws2.Cells[i, 11]).Text != "")
{
string z41 = ws2.Cells[i, 3].Text;
z.Add(z41);
}
}
Console.WriteLine("第一个数据是什么:"+z1[0]);
z.AddRange(z1);
z.AddRange(z2);
z.AddRange(z3);
z.AddRange(z4);
//存入数据中
Console.WriteLine("第一个数值是"+z[0]);
当我打印z1中的第一个数据时,显示正常:T1 (Excel中的第一个数据)
当我打印z中的第一个数据时,显示异常:T5 (Excel中的第二个数据,而且总数比合并前少了1个)。
我其实写了好几个这样的集合来存储数据的,其他的都没出现问题,就最后这个少了第一个数据.......(求大神指点):
List<string> a = new List<string>();
List<string> u = new List<string>();
List<string> b = new List<string>();
List<string> v = new List<string>();
List<string> c = new List<string>();
List<string> w = new List<string>();
List<string> d = new List<string>();
List<string> x = new List<string>();
List<string> e = new List<string>();
List<string> y = new List<string>();
List<string> z1 = new List<string>();
List<string> z2 = new List<string>();
List<string> z3 = new List<string>();
List<string> z4 = new List<string>();
List<string> z = new List<string>();
for (int i = 3; i < ws2RowsCount; i++)
{
if ((ws2.Cells[i, 8]).Text != "")
{
string uu = ws2.Cells[2, 8].Text;
string aa = ws2.Cells[i, 6].Text;
string z11=ws2.Cells[i,3].Text;
u.Add(uu);
a.Add(aa);
z1.Add(z11);
}
if ((ws2.Cells[i, 9]).Text != "")
{
string vv = ws2.Cells[2, 9].Text;
string bb = ws2.Cells[i, 6].Text;
string z21 = ws2.Cells[i, 3].Text;
v.Add(vv);
b.Add(bb);
z2.Add(z21);
}
if ((ws2.Cells[i, 10]).Text != "")
{
string ww = ws2.Cells[2, 10].Text;
string cc = ws2.Cells[i, 6].Text;
string z31 = ws2.Cells[i, 3].Text;
w.Add(ww);
c.Add(cc);
z3.Add(z31);
}
if ((ws2.Cells[i, 11]).Text != "")
{
string xx = ws2.Cells[2, 11].Text;
string dd = ws2.Cells[i, 6].Text;
string z41 = ws2.Cells[i, 3].Text;
x.Add(xx);
d.Add(dd);
z4.Add(z41);
}
}
Console.WriteLine("第一个数据是什么:"+z1[0]);
e.AddRange(a);
e.AddRange(b);
e.AddRange(c);
e.AddRange(d);
y.AddRange(u);
y.AddRange(v);
y.AddRange(w);
y.AddRange(x);
z.AddRange(z1);
z.AddRange(z2);
z.AddRange(z3);
z.AddRange(z4);
存入数据中
Console.WriteLine("第一个数值是"+z1[0]);
目前解决方案:
合并时直接用第一个集合进行合并,测试数据显示正常,集合个数也OK
Console.WriteLine("第一个数值是"+z1[0]);
z1.AddRange(z2);
z1.AddRange(z3);
z1.AddRange(z4);
Console.WriteLine("第一个数值是"+z1[0]);
但是后面又出现问题了,写入数据时读取的z1又变成合并之前的了.......纠结 中...........
欢迎关注本人的公众号:编程手札,文章也会在公众号更新