Table中合并相同内容列+Excel中合并相同内容列。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Table中合并相同内容列+Excel中合并相同内容列。相关的知识,希望对你有一定的参考价值。
Table中合并相同内容列的方法比较好办,网上代码也很多,参照了一些把它封装成jquery
插件,调用起来还是蛮好用的。
这个地方稍微修改了下,有的时候td中内容虽然一样,但是数据库中的value却是不一样的,比如不同的公司,都有人事部,财务部,
公司A的财务部和公司B的财务部不能合并起来,所以我就给td加了个name属性。用于保存部门的ID,集团里面各公司部门ID总归不一样。
调用方式
$(function() {
$("#tbdianbao").rowspan(1);//合并第2列,
$("#tbdianbao").rowspan(2);//合并第3列
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
( function ($) { $.fn.extend({ //调用插件时的名字,传入的是列的索引0,1,2,,, "rowspan" : function (colIdx) { var that; var rowspan; //遍历table中的行 $( this ).find( "tr" ).each( function (row) { //获得该索引列的集合,并且用filter再过滤一下,取得可见的列,然后遍历它们 $( ‘td:eq(‘ + colIdx + ‘)‘ , this ).filter( ‘:visible‘ ).each( function (col) { //发现上下两列的内容一样 if (that != null && $<span style= "color: #ff0000;" >( this ).attr( "name" ) == $(that).attr( "name" ))</span> { rowspan = $(that).attr( "rowSpan" ); //如果是第一次进来合并两列 if (rowspan == undefined) { $(that).attr( "rowSpan" , 1); rowspan = $(that).attr( "rowSpan" ); } rowspan = Number(rowspan) + 1; $(that).attr( "rowSpan" , rowspan); //将该列隐藏 $( this ).hide(); } else { //相当保存上一列的对象 that = this ; } }); }); } }); })(jQuery); |
生成的表我们可能还要导入至Excel, 也需要合并相同的列,我们这些不懂VBA的孩纸伤不起啊,所以只能在生成Excel的时候自己判断合并列了
将从excel第3行写起,2列中公司ID相同的列合并,3列中部门ID相同的列合并
this.margeCol(worksheet, 2, 2, dtExcel, "GongSiID");
this.margeCol(worksheet, 2, 3, dtExcel, "BuMenId");
1 /// <summary> 2 /// 合并Excel中的列 3 /// </summary> 4 /// <param name="worksheet">工作簿</param> 5 /// <param name="rno">工作簿起始行的上一行</param> 6 /// <param name="cno">工作簿起始列</param> 7 /// <param name="dttemp">绑定用表</param> 8 /// <param name="colName">合并用列</param> 9 private void margeCol(Microsoft.Office.Interop.Excel._Worksheet worksheet, int rno, int cno,DataTable dttemp,string colName) 10 { 11 string dcvalue = string.Empty; 12 13 int sron=rno;//起始行 14 15 foreach (DataRow dr in dttemp.Rows) { 16 17 if (dcvalue != string.Empty && dcvalue == dr[colName].ToString()) 18 { 19 rno = rno + 1;//行累加 20 } 21 else 22 { 23 dcvalue = dr[colName].ToString(); 24 25 //当目标行比起始行大的时候说明有行的内容一致 26 if (rno > sron) { 27 worksheet.get_Range(worksheet.Cells[sron, cno], worksheet.Cells[rno, cno]).Merge(worksheet.get_Range(worksheet.Cells[sron, cno], worksheet.Cells[rno, cno]).MergeCells); 28 } 29 30 //合并结束后起始行往下移动一行 31 rno = rno + 1; 32 sron = rno; 33 34 } 35 } 36 37 }
以上是关于Table中合并相同内容列+Excel中合并相同内容列。的主要内容,如果未能解决你的问题,请参考以下文章