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         }

时间: 2024-10-22 15:14:03

Table中合并相同内容列+Excel中合并相同内容列。的相关文章

如何使用免费控件将Word表格中的数据导入到Excel中

我通常使用MS Excel来存储和处理大量数据,但有时候经常会碰到一个问题—我需要的数据存储在word表格中,而不是在Excel中,这样处理起来非常麻烦,尤其是在数据比较庞大的时候, 这时我迫切地需要将word表格中的数据导入到Excel中.相信大家也碰到过同样的问题,下面我就给大家分享一下在C#中如何使用免费控件来实现这一功能.这里,我使用了两个免费API, DocX和Spire.Xls. 有需要的朋友可以下载使用.下载地址: DocX:codeplex官网 Spire.Xls: E-iceb

c#.net循环将DataGridView中的数据赋值到Excel中,并设置样式

Microsoft.Office.Interop.Excel.Application excel =                new Microsoft.Office.Interop.Excel.Application();            excel.SheetsInNewWorkbook = 1;            excel.Workbooks.Add(); //设置Excel列名            excel.Cells[1, 1] = "学号";     

机房收费系统———如何将MSFlexGrid中的数据导入到Excel中

机房收费系统进行了一段时间了,虽然说大体上跟学生信息管理系统一样,不过也有不一样的地方.比如说报表.如何将MSFlexGrid中德数据导入到Excel中等等.这些东西原来没有接触过,第一次接触难免有些陌生.这些问题困扰了我好长-时间,一看到它头都大了.不过,提高班名言——不将就是发现的源动力.本着这一原则,慢慢的攻克了这些问题. 机房收费系统中好几个地方需要将MSFlexGrid中德数据导入到Excel中,这是在学生信息管理系统中没有的功能.首先,首先需要在vb里面引用我们所需要的对象:Micr

ListView中的数据表格写入Excel中

SaveFileDialog sfd = new SaveFileDialog(); sfd.DefaultExt = "xls"; sfd.Filter = "Excel文?件t(*.xls)|*.xls"; if (sfd.ShowDialog() == DialogResult.OK) {  DoExport(this.listView1, sfd.FileName); } private void DoExport(ListView listView, st

Gridview中的数据导出到excel中

protected void btnExport_Click(object sender, EventArgs e)    {                   //导出全部数据,取消分页        gvInfo.AllowPaging = false;        gvInfo.ShowFooter = false; GetDataSource(condition); Response.Clear();        Response.Buffer = true;        Res

将Jquery EasyUI中DataGird的数据导入Excel中

1.第一步获取前台DataGrid中的数据 var rows = $('#tb).datagrid("getRows");            if (rows.length == 0) {                $("#ShowMsg").html("没有数据可供导出!");                return;            }            var columns = new Array();       

转换DataSet中的多个表为Excel中的多个Sheets

第一种方法: 1. 在设计页面,有一个button按钮,当用户单击按钮的时候,发生转换 <asp:Button ID="Export" runat="server" Text="Export" OnClick="Export_Click" /> 2. 发生转换的代码 protected void Export_Click(object sender, EventArgs e) { using (SqlConnect

如何通过Flow将SharePoint数据同步到Excel中

很多同学在日常工作中希望对SPO LIST的数据进行分析汇报,但没有Power BI怎么办呢,难道每次要分析数据的时候都去SPO上把数据导出一份吗,这个交互是不是有点不太理想呢.还有一个场景就是老板就喜欢看excel.PPT形式的报表,你有招么,哈哈. 那么今天跟大家分享一下如何通过flow将SPO的数据自动保存到excel中 首先,我们继续沿用我们的请假申请list,我们一起回忆一下这个list的功能. 用于员工提交请假申请 申请提交后自动触发审批邮件到直属领导 直属领导审批后自动触发邮件反馈

java中使用poi实现导入Excel

1.java中使用poi实现导入Excel public class XlsDto { /** * 选课号 */ private Integer xkh; /** * 学号 */ private String xh; /** * 姓名 */ private String xm; /** * 学院 */ private String yxsmc; /** * 课程号 */ private Integer kch; /** * 课程名 */ private String kcm; /** * 成绩