C#实战018:Excel操作-多个List集合合并问题

在从Excel提取数据并合并到集合中时,遇到合并后的集合丢失首个元素的问题,详细探讨了代码实现过程及初步解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        今天提取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又变成合并之前的了.......纠结  中...........

欢迎关注本人的公众号:编程手札,文章也会在公众号更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ProgramNotes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值