1. 程式人生 > >C#實戰018:Excel操作-多個List集合合併問題

C#實戰018:Excel操作-多個List集合合併問題

        今天提取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又變成合並之前的了.......糾結  中...........