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);
}
}
}

}
}
}

最新文章

  1. 慕课网__CSS_网页图标制作
  2. javascript类型系统——包装对象
  3. [译]在AngularJS中何时应该使用Directives,Controllers或者Service
  4. 移动应用产品开发-android开发项目记录
  5. python parse命令行参数
  6. WTL 设置 SDI 主窗口初始大小的方法
  7. 经常出现null错误之tostring
  8. NIO(四、Selector)
  9. golang 学习路径
  10. KVO的使用三:基于runtime实现KVO
  11. jquery之jsonp相关知识
  12. make命令回显Makefile执行脚本命令
  13. C#实现物联网系统温度解析的函数(支持补码)
  14. 如何检查显卡类型,DirectX和OpenGL的版本
  15. jsp标准动作
  16. Node.js其他模块
  17. 强制删除一个Windows服务
  18. jmeter 使用ANT运行 设置自动停止时间
  19. ADB 源码分析(一) ——ADB模块简述【转】
  20. .netcore2.0 发布CentOS7

热门文章

  1. 并不对劲的复健训练-bzoj5301:loj2534:p4462 [CQOI2018]异或序列
  2. bat 将war文件转换成ear文件
  3. shiro学习(一)
  4. 配置lombok到eclipse上去
  5. 深入理解hadoop之排序
  6. Java程序员转行大数据的优势
  7. tensorflow-解决3个问题
  8. 版本控制工具 svn 一
  9. Hive动态分区和分桶(八)
  10. 一键登录已成大势所趋,Android端操作指南来啦!