C#實戰018:Excel操作-多個List集合合併問題
阿新 • • 發佈:2018-11-24
今天提取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又變成合並之前的了.......糾結 中...........