将一个Excel文件读取到DataGridView里面,然后对这个DataGridView进行处理,这个Excel文件一共有3列数据,
如果第一列和第二列的数据完全一样的话,就把对应的那几行数据的第三列进行合并,具体的看图:
你先把数据放到集合或DataTable中,直接在集合或DataTable中把数据合并了再绑定到DataGridView。
Lanucher,
你能不能告诉我一个思路,就是说怎么样去进行数据合并?感谢。
@无 影: 你的没合并前的 dgv.DataSource 是 DataTable吗?
@无 影: 合并的思路很简单,参照你原来的代码,只是每次 DataRow dr = dt.NewRow(); 之前,先做一次查找:DataRow[] rows = dt.Select(string.Format("COL1 == {0} AND COL2 == {1}",dgv.Rows[i].Cells[0].Value.ToString().Trim(),dgv.Rows[i].Cells[1].Value.ToString().Trim()));
如果找到了,则直接修改: rows["COL3"] += dgv.Rows[i].Cells[2].Value.ToString().Trim()
@Launcher:
貌似rows["COL3"] += dgv.Rows[i].Cells[2].Value.ToString().Trim();这样的语法是错误的啊。
@无 影: 我就表示下意思,只是说明把相同行的第三列数据合并在一起。
rows["COL3"] = rows["COL3"].ToString() + ","+dgv.Rows[i].Cells[2].Value.ToString().Trim()
@Launcher:
我明白,只是修改的时候是修改DataTable里面的那一列的值吗?
@无 影: 对。
可以在绑定数据前处理
我就是想知道怎么处理,我试过用了循环进行比较,但是发现得不到我要的效果:
public void SetSource() { dt.Columns.Add("AA"); dt.Columns.Add("BB"); string a = ""; for (int i = 0; i < dgv.Rows.Count; i++) { DataRow dr = dt.NewRow(); if (dgv.Rows[i].Cells[0].Value.ToString().Trim() == dgv.Rows[i + 1].Cells[0].Value.ToString().Trim()) { dr["AA"] = dgv.Rows[i + 1].Cells[0].Value.ToString(); a = a + "," + dgv.Rows[i].Cells[1].Value.ToString() + "," + dgv.Rows[i + 1].Cells[1].Value.ToString(); dr["BB"] = a; dt.Rows.Add(dr); } else { dr["AA"] = dgv.Rows[i].Cells[0].Value.ToString(); dr["CC"] = dgv.Rows[i].Cells[1].Value.ToString(); dt.Rows.Add(dr); } } this.dgv2.DataSource = dt; }
@无 影: if (dgv.Rows[i].Cells[0].Value.ToString().Trim() == dgv.Rows[i].Cells[1].Value.ToString().Trim()) 应该这样写吧