希望我的一些想法能让你们碰撞出属于你的火花
看这篇之前可以看看上一篇http://www.tnblog.net/15736469932/article/details/2971
----------------------------------
更新在文章末尾
-------------------------------
先上个效果图
红色部分都是同一人,买了哪些东西,但是后面合并的列都是相同的,所以经理告诉我,把相同的合并出来
不得不说,第一次遇到这种情况,一开始有点懵无从下手的感觉,索性琢磨了半天还是弄出来了
对比我们原来的方法 主要多了这几个参数
string ColumnName , --对比的参数 int firstCol ,--起始列 int lastCol --终止列
数据处理方面,一开始难点在于我不知道怎样处理数据,我不知道它有多少个相同的数据,在哪一行,终止于哪一行
一开始,想把DataTable转为Tolist ,由于缺少实体无法转,然后钻牛角尖,一直想把我们的字典自动化转为model,
最后放弃,转为使用C#自带的查询:Select ,注意,这个Select 不是EF的Select
开始处理逻辑
int RowsCount = 0;--总条数
int iCount = 0; --循环次数
string BillCode = row[ColumnName].ToString();//取出单号
string sql = "订单号='" + BillCode + "'";
DataRow[] Rows = table.Select(sql);
然后转化为DataTable
DataTable TempDT = table.Clone();
foreach (DataRow DR in Rows)
{
TempDT.ImportRow(DR);
}
主要是,我们合并的时候,不能一下把所有列合并成一行,这样会导致我们后面数据丢失
需要一个一个列合并
总结一下,合并的时候我们只需合并一次就可以了,合并时条件需动态,判断条件需要清空
最后,一个通用的导出就做好了
-------------------------------------------------------
以下为更新内容
如果,我们想要更灵活的合并的时候,我只需要更改参数
DataTable 内容为我们需要合并的列 添加进去就好了
更改遍历方式 这样我们可以更灵活的来做表格导出
上个效果图