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中合并相同内容列。的主要内容,如果未能解决你的问题,请参考以下文章

excel表中同一列相同内容进行合并

怎样合并Repeater控件同一列中内容相同的单元格

excel每个单元格多行内加入相同的内容?

element表格合并前两列相同值内容

EXCEL如何根据A列相同内容在B列进行合并?

合并单元格情况下怎么快速把相同的内容再次合并在一起?