private static void SetColMerge(DataTable tb, ExcelWorksheet worksheet, string dtColumnName)
{
KeyValuePair<bool, int> isMergeAndStartRowIndex = new KeyValuePair<bool, int>(false, 2);
bool isLast = false;

for (int i = 1; i <= tb.Rows.Count; i++)
{
for (int j = 1; j <= tb.Columns.Count; j++)
{
if (tb.Columns[j - 1].ColumnName == dtColumnName)
{
if (i != 1 && tb.Rows[i - 1][j - 1].ToString() != tb.Rows[i - 2][j - 1].ToString())
{
isMergeAndStartRowIndex = new KeyValuePair<bool, int>(true, isMergeAndStartRowIndex.Value);
}
if (i == tb.Rows.Count)
{
isLast = true;
isMergeAndStartRowIndex = new KeyValuePair<bool, int>(true, isMergeAndStartRowIndex.Value);
}

if (isMergeAndStartRowIndex.Key)
{
int startRowIndex = isMergeAndStartRowIndex.Value;
if (isLast)
{
//判断当前行和上一行是不是一样
if (tb.Rows[i - 1][j - 1].ToString() != tb.Rows[i - 2][j - 1].ToString())
{
worksheet.Cells[startRowIndex, j, i, j].Merge = true;
}
else
{
worksheet.Cells[startRowIndex, j, i + 1, j].Merge = true;
}
}
else
{
worksheet.Cells[startRowIndex, j, i, j].Merge = true;

isMergeAndStartRowIndex = new KeyValuePair<bool, int>(false, i + 1);
}
}
}

}
}
}

epplus动态合并列数据的更多相关文章

  1. jquery 实现table的动态合并列

    常见的table是一行一列的形式,当有时会遇到后台的数据在前台显示时, 需要显示多对一,eg: 这是后台初始的数据,现在我要显示为: 思路:将第3列的td的rowspan改为为行数, 删除第一行之外的 ...

  2. Excel2010如何合并列数据

    小编以下图的Excel数据文件为例,如下图,有两列数据,第一列是歌曲名,第二列是该歌曲的演唱者,他们是有关联呢,那么如何把他们合并到同一列呢.   首先点击第3列的开始空白格,在这里编辑公式 =a1& ...

  3. C# 使用Epplus导出Excel [3]:合并列连续相同数据

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...

  4. Excel动态合并行、合并列

    背景: 在北京工作的时候,又一次同事问了我这样一个问题,说我要把从数据库获取到的数据直接通过NPOI进行导出,但是我对导出的格式要特殊的要求,如图: 冥思苦想,最终顺利帮同事解决问题,虽然有点瑕疵,但 ...

  5. SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子

    使用过SQL Server 2000的人都知道,要想实现行列转换,必须综合利用聚合函数和动态SQL,具体实现起来需要一定的技巧,而在SQL Server 2005中,使用新引进的关键字PIVOT/UN ...

  6. 动态合并GridView数据行DataRow的列

    前段时间,Insus.NET一直在演示GridView控件Header头行或列:<动态变更GridView控件列名>和<动态合并或定制GridView控件Header头某些列> ...

  7. SQL语法集锦三:合并列值与分拆列值

    本文转载http://www.cnblogs.com/lxblog/archive/2012/09/29/2708724.html 在SQL中分拆列值和合并列值老生常谈了,从网上搜刮了一下并记录下来, ...

  8. SQL 合并列值和拆分列值

    合并列值 表结构,数据如下: id value ----- ------ aa bb aaa bbb ccc 需要得到结果: id values ------ ----------- aa,bb aa ...

  9. AppCan学习笔记----关闭页面listview动态加载数据

    AppCan页面关闭 AppCan 的页面是由两个HTML组成,如果要完全关闭的话需要在主HTML eg.index.html中关闭,关闭方法:appcan.window.close(-1); 管道 ...

随机推荐

  1. Web项目测试流程总结

    个人知识脑图总结 - 未完全(工作项目脑图总结存于网盘中)

  2. STL之Deque的使用方法

    STL 中类 stack 实现了一个栈 1)push 能够插入元素 2)pop 移除栈顶元素 使用的时候,需要包含头文件 #include <stack>,stack 被声明如下: nam ...

  3. nginx之配置

    1)反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端, ...

  4. sql server 2012使用新特性offset和fetch next完成分页操作

    1 select * from HumanResources.Department order by DepartmentID offset rows fetch next rows only; of ...

  5. http://www.moext.com博客搬家到这里啦

    1.原博客莫叉特用的是自己的域名http://www.moext.com,由于服务器在国外,访问不太稳定,SEO做得也很不好: 2.喜欢博客园的极简风格,目前来看广告量也在可接受范围: 3.一个偶然的 ...

  6. 入坑django2

    数据模型 关于时间的字段设置 add_date = models.DateTimeField('保存日期',default = timezone.now) mod_date = models.Date ...

  7. innodb存储引擎之内存

    1.innoDB存储引擎体系架构 如上图所示,innoDB存储是基于磁盘存储的,并且其中的记录以页的方式进行管理,但为什么要引入一个内存池呢? 其目的就是为了协调CUP速度与磁盘速度的鸿沟,基于磁盘的 ...

  8. PTA ”写出这个数“

      读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 10的100次方. 输出格式: 在 ...

  9. Alpha版本第一周小结

    姓名 学号 周前计划安排 每周实际工作记录 自我打分(百分制) HTB 061126 1.博客撰写,分配任务 2.编码实现各个模块的功能 1.撰写博客 2.已初步实现各个模块的功能,对某些数据处理还存 ...

  10. Oracle11g adump目录下面.aud增长导致空间撑满无法删除导致CRS无法启动的解决方法

    [root@node1 adump]# pwd /u01/app/oracle/admin/node/adump 大概有10000个文件 rm -rf * 屏幕显示: -bash: /bin/rm: ...