C# 使用Epplus导出Excel [3]:合并列连续相同数据
C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [3]:合并列连续相同数据
导出的Excel数据,列连续相同的则合并并水平垂直居中
原始数据
合并后的数据
代码如下:
/// <summary> /// 合并列 /// </summary> /// <param name="sheet"></param> /// <param name="startRowIndex"></param> /// <param name="items"></param> /// <param name="propertySelectors"></param> /// <param name="compareColIndex">比较的列</param> /// <param name="mergeColIndex">合并的列集合</param> public static void MergeColCells(ExcelWorksheet sheet, int startRowIndex, IList<Student> items, Func<Student, object>[] propertySelectors, int compareColIndex,List<int> mergeColIndexs) { Dictionary<int, int> dicMerge = new Dictionary<int, int>(); var preData = string.Empty; int index = 0; for (var i = 0; i < items.Count; i++) { var currData = propertySelectors[compareColIndex](items[i]); if (string.IsNullOrEmpty(preData) || currData.ToString() != preData) { preData = currData.ToString(); dicMerge.Add(i, i); index = i; } else { dicMerge[index] = i; } for (var j = 0; j < propertySelectors.Length; j++) { var colData = propertySelectors[j](items[i]); sheet.Cells[i + startRowIndex, j + 1].Value = colData; } } foreach (var item in dicMerge) { if (item.Value - item.Key > 0) { for (int i = 0; i < mergeColIndexs.Count; i++) { sheet.Cells[item.Key + startRowIndex, mergeColIndexs[i] + 1, item.Value + startRowIndex, mergeColIndexs[i] + 1].Merge = true; sheet.Cells[item.Key + startRowIndex, mergeColIndexs[i] + 1, item.Value + startRowIndex, mergeColIndexs[i] + 1].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center; sheet.Cells[item.Key + startRowIndex, mergeColIndexs[i] + 1, item.Value + startRowIndex, mergeColIndexs[i] + 1].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center; } } } }
List<int> mergeColIndexs = new List<int>(); mergeColIndexs.Add(0); mergeColIndexs.Add(2); EpplusHelper.MergeColCells(worksheet,2,studentList,columnsValueList.ToArray(),0, mergeColIndexs);
分类:
c#
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具