tnblog
首页
视频
资源
登录

C#导出 Execl 类型文件(二)动态合并表格(更新了)

5586人阅读 2019/12/9 17:23 总访问:223234 评论:1 收藏:0 手机
分类: .NET

希望我的一些想法能让你们碰撞出属于你的火花

看这篇之前可以看看上一篇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 内容为我们需要合并的列 添加进去就好了



更改遍历方式 这样我们可以更灵活的来做表格导出


上个效果图




评价
若人生只如初见,愿还是相遇的那个下午,阳光明媚转身一笑便如春暖花开
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
欢迎加群交流技术