HTML5技术

NPOI操作EXCEL(五)——含合并单元格复杂表头的EXCEL解析 - 彩色铅笔(2)

字号+ 作者:H5之家 来源:博客园 2015-10-22 08:10 我要评论( )

IsMergedRegionCell( int cellIndex, int rowIndex,ISheet sheet, ref int firstRegionRow) 3 { 4 bool isMerged = false ; 5 var regionLists = GetMergedCellRegion(sheet); ( var cellRangeAddress in regionLis

IsMergedRegionCell(int cellIndex, int rowIndex,ISheet sheet,ref int firstRegionRow) 3 { 4 bool isMerged = false; 5 var regionLists = GetMergedCellRegion(sheet); (var cellRangeAddress in regionLists) 8 { 9 for (int i = cellRangeAddress.FirstRow; i <= cellRangeAddress.LastRow; i++) 10 { 11 if (rowIndex == i) 12 { 13 for (int j = cellRangeAddress.FirstColumn; j <= cellRangeAddress.LastColumn; j++) 14 { 15 if (cellIndex == j) 16 { 17 isMerged = true; 18 firstRegionRow = cellRangeAddress.FirstRow; 19 break; 20 } { 23 continue; 24 } 25 } 26 } { 29 continue; 30 } 31 } 32 } isMerged; 35 } List<CellRangeAddress> GetMergedCellRegion(ISheet sheet) 39 { 40 int mergedRegionCellCount = sheet.NumMergedRegions; 41 var returnList = new List<CellRangeAddress>(); (int i = 0; i < mergedRegionCellCount; i++) 44 { 45 returnList.Add(sheet.GetMergedRegion(i)); 46 } returnList; 49 }

博主只查阅到NPOI有sheet所有合并区域属性,以及获取某合并区域合并坐标方法...故做了此方法来做判断

2.第6-16行则是在获取合并单元格值,具体思路是:

合并坐标起始行不等于当前行,若等则代表有列合并(已经是空值),而我们暂不对列合并做值的特殊处理

resultIndex是计算该合并单元格值已被读取到DTO中的索引

oldModel是获得含有该合并单元格值的数据对象

 

这样,我们就成功的读取到了左合并单元格的数据,在入库时稍作处理即可得到我们想要的“水位.潮汐性质”数据字段。

 

至此,我们已经完成了绝大部分excel表格模板的解析工作。

上述代码如有任何不对之处,欢迎指出,一定虚心请教~~~

 

不过,博主的甲方特别难缠,最近又给了一个矩阵模板excel,让解析入库,还说有同样类型的模板很多个....

意思很明显,这尼玛又得加班加点的搞了...

模板样式如下:

出发城市、到达城市内容、个数不定,意思就是连表头内容都是不确定的....

还要求数据进库后,再能把筛选出来的数据按原模板顺序导出....

 

好吧,吐血中~~~如果博主下周还活着,请关注下一篇文章查看解决方案(为什么是下周呢?因为尼玛这周末是最后期限...)

 

原创文章,代码都是从自己项目里贴出来的。转载请注明出处哦,亲~~~

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Linux系统(一)文件系统、压缩、打包操作总结 - 张龙豪

    Linux系统(一)文件系统、压缩、打包操作总结 - 张龙豪

    2017-02-23 16:00

  • 详解Google Chrome浏览器(操作篇) - Alan_beijing

    详解Google Chrome浏览器(操作篇) - Alan_beijing

    2017-02-13 15:01

  • SVG基础以及使用Javascript DOM操作SVG - 管的宽

    SVG基础以及使用Javascript DOM操作SVG - 管的宽

    2017-01-14 11:00

  • 【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

    【第一篇】ASP.NET MVC快速入门之数据库操作(MVC5+EF6) - 三生石上

    2016-12-23 17:00

网友点评
w