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