背景:

在北京工作的时候,又一次同事问了我这样一个问题,说我要把从数据库获取到的数据直接通过NPOI进行导出,但是我对导出的格式要特殊的要求,如图:

冥思苦想,最终顺利帮同事解决问题,虽然有点瑕疵,但是毕竟是盲写,也算是圆满完成任务了:

//假设 DataTable dt=获取到的datatable
List<Year_Month> listYear=Year_Month.ToList();//年限list
List<Data> dataList=Data.ToList();//国别list
List<dt> dtList=dt.ToList();//数据listint countYear=listYear.Count();//年限数量
int countdata=dataList.Count();//国别数量
int countdt=dtList.Count();//数据数量row=sheet.CreateRow(0);//创建行
cell=row.CreateCell(0);//创建列
cell.SetCellValue("时间");//单元格赋值
//合并行,合并列
sheet.AddMergedRegion(new CellRangeAddress(0,2,0,0));//些数据头,时间//标题进出口岸
cell=row.CreateCell(1);//创建列
cell.SetCellValue("进出口岸");//单元格赋值
//合并行,合并列
sheet.AddMergedRegion(new CellRangeAddress(0,0,1,countdata*2));//进出口岸//进口口岸名称
row=sheet.CreateRow(1);
for(int i=0;i<dataList.count;i++)
{//根据数据条数,动态创建列cell=row.CreateCell(2*i+1);//合并行,合并列sheet.AddMergedRegion(new CellRangeAddress(1,1,2*i+1,2*(i+1)));//进出口岸//批量赋值cell.SetCellValue(dataList[i].GuoName);
}//进出口
row=sheet.CreateRow(2);
for(int i=0;i<dataList.count;i++)
{cell=row.CreateCell(2*i+1);cell.SetCellValue("进口");cell=row.CreateCell(2*i+2);   cell.SetCellValue("出口");
}//数据
for(int i=0;i<yearList.count;i++)
{row=sheet.CreateRow(i+3);//年份cell=row.CreateCell(0);    cell.SetCellValue(yearList[i].nian);//数据赋值for(int j=0;j<datalist.count;j++){var item=shujuzongtiaoshu.where(u=>u.nianfen==yearList[i].year).toList();for(int k=0;k<item.count;k++){//数据有值赋值,没有的值得赋空值单元格站位if(item[k].guobiemingcheng==dataList[j].name){cell=row.CreateCell(2*j+1);cell.SetCellValue(datalist[j].jinkou);cell=row.CreateCell(2*j+2);cell.SetCellValue(datalist[j].chukou);}else{cell=row.CreateCell(2*j+1);cell.SetCellValue("");cell=row.CreateCell(2*j+2);cell.SetCellValue("");}}}
}

效果:

提示:图片纯属后来补充,不能代表正式环境下生成文档格式,请见谅

总结:

技术什么的只要肯下功夫都会有的,面包会有的,奶油也会有的。可是难能可贵的是我们在不知道怎么做的时候能坚持一下,去自己脑补,我们要对自己,对生活乃至对工作任务及实现方法充满幻想与想象,只有这样,我们才有取之不竭用之不尽的创新去支持我们,给自己加油!

Excel动态合并行、合并列相关推荐

  1. rowspan 动态变化_rowspan相同值合并 怎么动态的rowspan合并行

    php 怎么控制表格,相同数据合并显示一行 Html中colspan属性和rowspan属性合并后该单元格的一个是合并行.一个合并列 colspan=2就代表合并他和他同一列的后一个单元格 rowsp ...

  2. Ant Design之表格动态合并行

    在web开发中,表格的行合并是一个很常见的需求.antd也提供了这种功能,但是文档中的示例代码却和我想象中的相差甚远,如下所示,它是通过一种很笨的办法实现的行合并.这样当表格的数据源是动态获取的,我们 ...

  3. java操作导出Excel(jxl导出WritableWorkbook)jxl合并单元格,单元格的设置,单元格居中、字体、大小、换行、合并行,列宽、自动换行撑起高度、指定特定字符串样式等

    new WritableCellFormat().setWrap(true);//通过调整宽度和高度自动换行 1.1     需求描述 MS的电子表格(Excel)是Office的重要成员,是保存统计 ...

  4. java合并sheet行_java poi Excel循环合并行

    //Java poi 实现循环合并行,还是第一次遇到这种问题 //在网上查了很多资料,都不是自己想要的 //以下为自己研究后,写的一点东西,给大家分享,希望对大家能有思路上的启发,也希望大家能提出宝贵 ...

  5. Excel按某一列或多列合并行

    如果以某一列或者几列为基准,只要这一列或多列的数据相同就合并这些行的数据,不管这些行的其他列的数据是否相同.例如下图: 比如按登录名和地区两列合并行.希望最终要得到的结果如下: (注,无需比对的其他列 ...

  6. sed行处理详解(交换行,合并行,删除行等)

    1.合并行 zj@zj:~/Script/blog_script$ cat test1 1 2 3 4 合并上下两行 zj@zj:~/Script/blog_script$ sed '$!N;s/\n ...

  7. elementUI 表格合并单元格-多层级-合并行

    elementUI 表格合并单元格-多层级-合并行 需求:使用vue + elementUI 实现如下表格: 省份 城市 区域 人口 贵州 遵义 汇川区 100 红花岗区 100 播州区 100 贵阳 ...

  8. 【editplus经常用的快捷键】Editplus 选中一行ctrl+r,Edit 合并行 Ctrl+Shift+J 合并选定行 删除当前行

    Editplus 选中一行: ctrl+r Editplus 复制一行: ctrl+r选择行,然后ctrl+c复制. 复制一行到下一行中:Editplus有:Ctrl+j 复制上一行的一个字符到当前行 ...

  9. antd Table合并行 rowSpan

    实现这种效果,同一种知识点类型合并行. <Tablecolumns={columns}// dataSource={dataSource}dataSource={createNewArr(dat ...

最新文章

  1. 机器学习(10)随机森林(预测泰坦尼克号旅客存活率)
  2. Cell封面:王二涛组在丛枝菌根共生“自我调节”研究中取得重大进展(视频+漫画解读)...
  3. html,css,javascript之间的关系是什么?各是负责哪方面工作的?
  4. 获取php数组的键名和值
  5. python实现冒泡排序视频_Python实现冒泡排序算法的完整实例
  6. linux安装virtualbox命令,在Linux中从命令行查找Virtualbox Version的方法
  7. html5 百度地图api文档,开发指南--百度地图JavaScript API大众版.doc
  8. ASP.NET Core - Razor 页面介绍
  9. 设计模式是什么鬼(状态)
  10. 关于JS括号匹配的面试题
  11. Programming WCF Services翻译笔记(八)
  12. bzoj2151: 种树
  13. MySQL(15)-----运算符和优先级查询结果拼接处理及CONCAT()、CONCAT_WAS()和GROUP_CONCAT()函数的使用
  14. Go 爱好者福利,《Go 语言编程之旅》正式开源!
  15. Vibe算法原理与实践(C++)
  16. 腾讯地图产业版WeMap 升级
  17. 电脑双网卡访问内外网
  18. SRE(运维工程师)一文详解技术体系和架构师成长之路
  19. 为什么要有域名,看完你就懂了。
  20. 记录,Cents 7 更改home和root的中文路径

热门文章

  1. JavaWeb~模板引擎Thymeleaf总结
  2. 如何加速打开Axure分享的链接
  3. 卡尔曼滤波五个公式推导
  4. 《地理信息系统导论》第4章 栅格数据模型 复习题
  5. jquery刷新当前页面、刷新父级页面
  6. 数值分析的matlab答案,Matlab作业3(数值分析)答案.doc
  7. NFS服务6---四种情况的权限实验
  8. 一级消防工程师证书价值下降,前景茫然?
  9. c语言编译小学生计算题,小学生基本运算习题-给小学生编写练习20以内加减法计算的c程序.要求:#61548 爱问知识人...
  10. 1.计算机的网络功能和组成,1.2计算机网络的组成与功能.ppt