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 = ;
for (var i = ; 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 = ; j < propertySelectors.Length; j++)
{
var colData = propertySelectors[j](items[i]);
sheet.Cells[i + startRowIndex, j + ].Value = colData;
}
} foreach (var item in dicMerge)
{
if (item.Value - item.Key > )
{
for (int i = ; i < mergeColIndexs.Count; i++)
{
sheet.Cells[item.Key + startRowIndex, mergeColIndexs[i] + , item.Value + startRowIndex, mergeColIndexs[i] + ].Merge = true;
sheet.Cells[item.Key + startRowIndex, mergeColIndexs[i] + , item.Value + startRowIndex, mergeColIndexs[i] + ].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
sheet.Cells[item.Key + startRowIndex, mergeColIndexs[i] + , item.Value + startRowIndex, mergeColIndexs[i] + ].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
}
}
}
}
List<int> mergeColIndexs = new List<int>();
mergeColIndexs.Add();
mergeColIndexs.Add();
EpplusHelper.MergeColCells(worksheet,,studentList,columnsValueList.ToArray(),, mergeColIndexs);
C# 使用Epplus导出Excel [3]:合并列连续相同数据的更多相关文章
- C# 使用Epplus导出Excel [5]:样式
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [4]:合并指定行
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [2]:导出动态列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# 使用Epplus导出Excel [1]:导出固定列数据
C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...
- C# NPOI导出Excel和EPPlus导出Excel比较
系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...
- C# NPOI导出Excel和EPPlus导出Excel
转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- poi生成excel报表合并列
功能任务 poi导出excel统计报表,有合并列的. 根据结构生成层级. 目标 1输入一个linkshashmap LinkedHashMap<String, Object> fieldM ...
- asp.net下简单的Epplus导出excel
引用的命名空间 using System.IO; using OfficeOpenXml; /// <summary> /// 导出excel /// </summary> / ...
随机推荐
- Cocos2d-x-html5之HelloWorld深入分析与调试
Cocos2d-x-html5之HelloWorld深入分析与调试 另:本章所用Cocos2d-x版本为: Cocos2d-html5-v2.1.1 http://cn.cocos2d-x.org/d ...
- 可以提升3倍开发效率的 Intellij IDEA快捷键大全汇总(2019)
整理了一下IDEA的常用快捷键,可以打印出来或者弄成图片设置为桌面,为广大的程序员们节省更多的时间去谈恋爱. 常用快捷键1 Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式 ...
- 解决:npm中 下载速度慢 和(无法将“nrm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次)。
1.解决下载速度 因为我们npm下载默认是,连接国外的服务器,所以网速不是特别好的时候,可能下不了包 安装nrm 使用 npm i nrm -g 我们的一般工具包都是下载到全局 安装完毕之后,可以运行 ...
- gns3 拖出设备显示一个红色的s,无法启动虚拟设备
通过view-docks-调出console窗口,显示错误信息: Error while creating project: Can't connect to server http://172.0. ...
- Linux —— 文件搜索命令
文件搜索命令(配置文件/etc/updatedb.conf) locate 文件名 搜索速度非常快 在后台数据库中按照文件名搜索 updatedb 更新数据库 只可以按照文件名搜索 whereis 命 ...
- 2017 Multi-University Training Contest - Team 1 Add More Zero
Problem Description There is a youngster known for amateur propositions concerning several mathemati ...
- IIS7开启目录浏览功能
IIS7开启目录浏览功能: 在右侧操作中点击启用,并在左侧面板中勾选显示字段.
- python入门之数据类型之列表、元组、字典
list 格式: test_list = ["a",123,[1,"b"]] 索引: >>>print(test_list[0]) " ...
- Unity里面两种单例模式的实现
using System; public class Singleton<T> where T : class, new() { private static T m_instance; ...
- div 绝对定位
div绝对居下 .Phone2title{ width:%; height:30px; line-height:30px; /*text-align:left;*/ /*background-colo ...