精华内容
下载资源
问答
  • 上一章我讲了如何创建表格和设置单元格的大小,这一章我讲一讲如何设置单元格背景与如何合并单元格。 老规矩,先上图: 这是设置表格背景的代码,只加了background标记,就可以轻轻松松的达到表格背景创建的功能...

    上一章我讲了如何创建表格和设置单元格的大小,这一章我讲一讲如何设置单元格背景与如何合并单元格。
    老规矩,先上图:在这里插入图片描述
    这是设置表格背景的代码,只加了background标记,就可以轻轻松松的达到表格背景创建的功能(注意,这只是在一个格内设置背景,如要没个格都设置背景,需在每个td标记内写入background标记和图片名)。
    合并单元格也很简单,但是分类很多,又分上下左右合并。
    1.左右合并:在这里插入图片描述

    2.上下合并:
    在这里插入图片描述
    3.上下左右合并:在这里插入图片描述
    这些代码中内容没有改变,只改变了标签,左右合并的标签是colspan,上下合并的标签是rowspan,上下左右合并的标签是colspan+rowspan。
    这一章就讲到这里,下一章我再讲讲如何创建文本超链接,图像超链接以及其他超链接~
    系列教程持续发布中,欢迎订阅、关注、收藏、评论、点赞哦~~( ̄▽ ̄~)~

    展开全文
  • 实例28讲了如何在Excel文件中自动合并上下行相同内容的单元格,此例则讲一讲如何在Word文件中做类似的操作。因为处理Excel和Word的模块是不同的,所以合并单元格也有一些差异。相对来说,Word中的操作更麻烦一些。在...

    9988007015a14f955bbe6524fe0544b5.png

    实例28讲了如何在Excel文件中自动合并上下行相同内容的单元格,此例则讲一讲如何在Word文件中做类似的操作。因为处理Excel和Word的模块是不同的,所以合并单元格也有一些差异。相对来说,Word中的操作更麻烦一些。

    在Excel中,我们手动合并单元格后,合并的单元格中只保留1个值,而Word则全部保留。比如在word中,3个单元格的内容都是“ABC”,合并之后就变成了“ABCABCABC”,这显然不是我们想要的。下图是原始文档,要求将第2列和第3列中,上下相邻单元格内容一样的合并。

    59189f6f41c6c6be5a0400b3306088d9.png

    还是先定义合并单元格函数,以便后续多次调用。由于处理Word中表格的代码与处理Excel不同,所以函数也要做微调。主要变化就是合并的函数表达,对于word中的表格,表达式是table.cell(row1,col1).merge(table.cell(row2,col2)),意思是将第row1行col1列到row2行col2列之间的表格合并(row2,col2要分别大于等于row1和col1)。需要注意的是cell(0,0)表示第一行第一列的单元格,以此类推。如下函数是在例28的基础上修改的。

    #定义合并单元格的函数    
    def Merge_cells(table,target_list,start_row,col):
        '''
        table: 是需要操作的表格
        target_list: 是目标列表,即含有重复数据的列表
        start_row: 是开始行,即表格中开始比对数据的行(需要将标题除开)
        col: 是需要处理数据的列
        '''
        start = 0 #开始行计数
        end = 0 #结束行计数
        reference = target_list[0] #设定基准,以列表中的第一个字符串开始
        for i in range(len(target_list)): #遍历列表
            if target_list[i] != reference: #开始比对,如果内容不同执行如下
                reference = target_list[i] #基准变成列表中下一个字符串
                end = i - 1 
                table.cell(start+start_row,col).merge(table.cell(end+start_row,col))
                start = end + 1
            if i == len(target_list) - 1: #遍历到最后一行,按如下操作
                end = i
                table.cell(start+start_row,col).merge(table.cell(end+start_row,col))

    然后需要读取word中相应表格里的数据,并提取出来,以便作为是否合并的判断基础。使用Document打开word文档,先查看一下其中表格的个数,以便我们锁定要处理的表格。由于word里面可能有隐藏表格,或者一个表格中有一段去掉了边框,让人看起来像是两个表格,直接在word中去数表格个数有时会不靠谱。

    通过len(doc.tables)看到,这个文档里面有2个表格。打开word文档,我们可以看到要处理的表格是第一个,即doc.tables[0]。如果情况较为复杂,我们可以打印表格中第一行单元格的内容进一步确认是否是我们需要处理的表格。确认好表格的序号后,就可以开始读取内容了。

    from docx import Document
    doc = Document("收货记录.docx")
    print("这个工作表有 {} 个表格。n".format(len(doc.tables))) #查看表格中的个数,以便锁定我们要处理的表格
    
    print("第一个表格的第一行的单元格中的内容如下:")
    for i in doc.tables[0].rows[0].cells: #读取第一个表格的第一行的单元格中的内容
        print(i.text)
    
    这个工作表有 2 个表格
    
    第一个表格的第一行的单元格中的内容如下
    序号
    供应商名称
    货物编码
    货物型号
    货物说明
    数量
    日期
    
    #读取word文档中的第一个表格的第二和第三列除标题和尾部总数行的数据
    doc = Document("收货记录.docx")
    table = doc.tables[0] #已确定是第一个表格,其索引是0
    supplier = [] #存储供应商名称
    pn = [] #存储物料编码
    max_row = len(table.rows) #获取第最大一行
    print("表格共有{}行".format(max_row))
    
    #读取第二行到29行,第2,3列中的数据
    for i in range(1,max_row-1):
        supplier_name = table.rows[i].cells[1].text #cells[1]指表格第二列
        supplier.append(supplier_name)
        
    for i in range(1,max_row-1):
        material_pn = table.rows[i].cells[2].text #cells[2]指表格第三列
        pn.append(material_pn)
        
    print("获取到{}个供应商名称,{}个物料编码。".format(len(supplier),len(pn)))
    
    >>
    表格共有30行
    获取到28个供应商名称28个物料编码

    以上程序,获取了表格中第2列和第3列的数据,并存入了列表supplierpn。然后就可以开始判断,并合并单元格了。下面调用之前定义好的函数Merge_cells,传入相应的参数,运行即可完成单元格合并。

    Merge_cells(table,supplier,1,1) #开始合并行为2,索引为1;供应商名称是在2列,索引为1
    Merge_cells(table,pn,1,2) #开始合并行为2,索引为1;物料编码是在3列,索引为2
    doc.save("检查.docx")

    到这一步,合并单元格算是完成了,但结果如下图所示,原单元格中的内容全部集中在一起,造成了重复内容。我们需要重写这些单元格以覆盖掉重复的内容,即可得到我们想要的结果。

    f97b310eab29346d381eb2665d4649a2.png
    #重新往第2和第3列写入数据,以覆盖之前重复的数据
    for row in range(1,len(supplier)+1):
        table.cell(row,1).text = supplier[row-2]
        table.cell(row,2).text = pn[row-2]
    doc.save("收货记录-合并单元格.docx")

    为什么写入合并单元格的时候,也是将合并之前的每个单元格都写了一次(比如写入“供应商HH”到第二行第1到6列的时候,写入了6次),为什么不会造成重复内容呢?是因为每写一次,就将原来的内容清空了。最终结果如下,目标达成!

    c79d5638eeb9a06fe3b570effce3f217.png

    如果您有需要处理的问题,可发邮件到我邮箱:donyo@qq.com,一起探讨解决方案。

    以上在Jupyter notebook上完成,所用到的代码及Excel 资料已上传GitHub及百度网盘, 欢迎下载到本地随意玩。

    Python版本:Python 3.6 64bit

    操作系统:Windows 7

    GitHub:Office_Automation_by_Using_Python

    百度Pan:“pan.baidu”加上“.com/s/1WXcoYts_uNJmccfJ0lrmWg” 提取码: kry7

    WeiXin:Python操作Office软件高效工作

    展开全文
  • 缘起 在前端开发过程中,大家想必都遇到过合并单元格的场景,那么你是怎么做的呢?欢迎分享, 这里分享我的方法供大家...rowspan 方法根据上下相邻的单元格内容相同则合并为一个。 copyRowspan 方法复制某列的合并规...

    缘起

    在前端开发过程中,大家想必都遇到过合并单元格的场景,那么你是怎么做的呢?欢迎分享, 这里分享我的方法供大家借鉴。 主要实现了2个方法 rowspan(colIdx) 和 copyRowspan (fromColIdx, toColIdx) 。rowspan 方法根据上下相邻的单元格内容相同则合并为一个。 copyRowspan 方法复制某列的合并规则。 一般这2个方法配合使用,可以完成比较复杂的单元格合并逻辑。
    先上个效果图:
    1532052245841-6e1deadb-0b9d-45b4-93d9-6629536945e1.png

    如图示,完成了 第0、1、2、3、7列的合并。

    效果图

    下面代码是生成上图效果的的代码,代码相当简单:

    
    $('#comboTable').on('draw.dt', function () {
        $(this).rowspan(0);  // 0列内单元格值相同会被合并
        $(this).copyRowspan(0, 1);  //复制0列的合并规则 到 1列
        $(this).copyRowspan(0, 2);
        $(this).copyRowspan(0, 3);
        $(this).copyRowspan(0, 7);
    
    });
    
    

    rowspan和copyRowspan是如何实现的呢?

    直接上代码了,不再详述原理,有研究精神的同学可以看代码研究下,如果有bug欢迎留言反馈。 偷懒的同学可以复制黏贴了。

    
    
    (function ($) {
        $.fn.extend({  //把如下2个方法,添加到jquery库中。
            "rowspan": function (colIdx) { //colIdx要合并的列序号,从0开始,  单元格中text(这个地方也可以改为html)相同则合并。 
                return this.each(function () {
                    var that;
                    $('tr', this).each(function (row) {
                        $('td:eq(' + colIdx + ')', this).filter(':visible').each(function (col) {
                            if (that != null && $(this).text() == $(that).text()) {
                                var 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;
                            }
                        });
                    });
                });
            },
            "copyRowspan": function (fromColIdx, toColIdx) { //复制源列的单元格合并规则
                return this.each(function () {
                    $('tr', this).each(function (row) {
                        var rowspan = $('td:eq(' + fromColIdx + ')', this).attr("rowSpan");
                        var style = $('td:eq(' + fromColIdx + ')', this).attr("style");
    
                        if (rowspan != undefined) {
                            $('td:eq(' + toColIdx + ')', this).attr("rowSpan", Number(rowspan));
                        }
                        if (style != undefined) {
                            $('td:eq(' + toColIdx + ')', this).attr("style", style);
                        }
                    });
                });
            }
        });
    
    })(jQuery);
    
    
    展开全文
  • 2、跨行rowspan属性:就是合并上下关系的单元格;而在table表格中,可以使用跨行或跨列属性的单元格有以下两种:1、表头单元格➜由标签创建的表头信息,其文本默认为居中的粗体文本;2、标准单元格➜由标签创建的...

    在html中的table表格实现跨行或跨列合并单元格,需要用到以下两个属性:

    1、跨列colspan属性:就是合并左右关系的单元格;

    2、跨行rowspan属性:就是合并上下关系的单元格;

    而在table表格中,可以使用跨行或跨列属性的单元格有以下两种:

    1、表头单元格➜由

    标签创建的表头信息,其文本默认为居中的粗体文本;

    2、标准单元格➜由

    标签创建的数据信息,其文本默认为左对齐的普通文本;

    也就是说:

    和两个标签中,都可以使用跨列colspan属性和跨行rowspan属性实现合并单元格;

    下面,我们具体演示table表格如何跨行或跨列合并单元格的?

    第一种:合并

    表头单元格

    1、跨列合并

    表头单元格使用colspan属性表头左右跨多少列,colspan属性值就设置多少,但不能大于表格实际的最大列数。

    比如,下列演示代码中,第2个表头单元格横跨两列:

    第1个表头单元格第2个表头单元格
    第2行,第1列第2行,第2列第2行,第3列
    第3行,第1列第3行,第2列第3行,第3列
    第4行,第1列第4行,第2列第4行,第3列

    以上表头横跨两列单元格的表格代码在浏览器中显示效果分析如下图:

    2、跨行合并

    表头单元格使用rowspan属性表头上下竖跨多少行,rowspan属性值就设置多少,但不能大于表格实际的最大行数。

    比如,下列演示代码中,第2个表头单元格竖跨两行:

    第1个表头单元格第1行,第2列
    第2个表头单元格第2行,第2列
    第3行,第2列
    第3个表头单元格第4行,第2列

    以上表头竖跨两行单元格的表格代码在浏览器中显示效果分析如下图:

    第二种:合并

    标准单元格

    1、跨列合并

    标准单元格使用colspan属性

    如果想要一个标准单元格左右横跨多列,可以使用colspan属性,其数值大小,表示该单元格跨多少列,但不能大于表格实际的列数。

    比如,想要跨两列,colspan属性值就设置为2,演示代码如下:

    td单元格td单元格
    td单元格td单元格td单元格

    以上代码在浏览器中显示效果如下:

    3、跨行合并

    标准单元格使用rowspan属性

    如果想要一个标准单元格竖跨多行,可以使用rowspan属性,其数值大小,表示该单元格跨多少行;

    比如,想要跨两行,rowspan属性值就设置为2,演示代码如下:

    td单元格td单元格td单元格
    td单元格td单元格

    以上代码在浏览器中显示效果如下:

    展开全文
  • 实例28讲了如何在Excel文件中自动合并上下行相同内容的单元格,此例则讲一讲如何在Word文件中做类似的操作。因为处理Excel和Word的模块是不同的,所以合并单元格也有一些差异。相对来说,Word中的操作更麻烦一些。在...
  • 前言这几天的项目再次应用到了表格中单元格合并的功能,之前的有个项目是只在某一列中进行合并...本插件主要用于表格单元格的纵向合并,前提,每行的tr里都有一个属性,比如data-pid,当上下行数据的这个属性值相等时,
  • 本次解决如何在网页上显示excel表格的问题: 1.1基本表格 table标签,声明出一个表格,表格的内容都包含在table标签内。 tr标签,声明出一行,每行的内容都被包含在tr标签内。 th标签,声明出一格,一般表示这一竖排...
  • 一般做OA类管理系统,经常涉及到“组织架构”的概念,那么像这种有上下层级关系的数据一般会做成树形菜单的方式显示,底层代码必定会用到递归算法。这篇随笔的目的就是要谈谈除了用树形菜单来显示这种上下层级关系的...
  • 批量实现word表格合并

    2017-07-07 05:56:16
    如何用程序实现word表格中单元格边框是网格线进行上下单元格合并问题,如图片中将虚线的上下单元格进行合并
  • )*********一、合并同类项虽然总是强调大家不要使用合并单元格,但是奈何某些领导偏偏就喜欢,没办法,只好照做了。如下图所示,需要根据组员信息,将组长进行合并。当然,大家一个一个手工合并也是没问题...
  • 前言 | 问题背景作为一款可嵌入系统的在线Excel,,纯前端表格...在Excel中我们常用的一个操作是插入行,并希望在插入行后自动复制上一行的样式,合并单元格,那么已这个需求为例,讲解如何重定义现有插入菜单。具体...
  • 上下一列合并colspan = “2” 左右一列合并单元格的格式: table < thead <th <tbody<td 这就是他们的格式还有这章学到了json如何链接html 意义非凡JQuery的dom操作:...
  • 点击图片 1元抢购Excel、Word、PPT全套课程编按:数据透视...)1合并同类项虽然总是强调大家不要使用合并单元格,但是奈何某些领导偏偏就喜欢,没办法,只好照做了。如图所示,需要根据组员信息,将组长进行合并。图...
  • 三线表是科研文献相关表格的基本表格,然而有很多科研工作者并不会绘制三线表,或者绘制的...而后,我们选择表格的第一行为表格抬头,选中后右键合并单元格,获得如下。之后,我们根据要表达的意思,需用上下或者...
  • VBA常用技巧

    2014-12-21 16:39:28
    15-4 取消合并单元格时在每个单元格中保留内容 12 技巧16 高亮显示单元格区域 12 技巧17 双击被保护单元格时不显示提示消息框 12 技巧18 重新计算工作表指定区域 12 技巧19 录入数据后单元格自动保护 12 技巧20 工作...
  • VBA编程技巧大全

    2013-08-05 09:03:19
    15-4 取消合并单元格时在每个单元格中保留内容 56 技巧16 高亮显示单元格区域 57 技巧17 双击被保护单元格时不显示提示消息框 58 技巧18 重新计算工作表指定区域 60 技巧19 录入数据后单元格自动保护 60 技巧20 工作...
  • wxPython学习手册

    热门讨论 2014-04-19 08:01:58
    7.4.4 如何合并复选框和列表框? 212 7.4.5 如果我想要下拉形式的选择该怎么做? 213 7.4.6 我能够将文本域与列表合并在一起吗? 214 7.5 本章小结 216 8、把窗口部件放入框架中 218 8.1 框架的寿命 218 8.1.1 如何...
  • 实例062 单元格的边框变色 实例063 表格外边框具有霓虹灯效果 实例064 控制表格指定外边框不显示 实例065 背景颜色渐变的表格 实例066 表格隔行变色 实例067 表格隔列变色 实例068 鼠标经过表格时,显示提示...
  • 实例319 上下移动列表项的位置 实例320 实现标签式选择 实例321 要提示才能看得见 实例322 水平方向的延伸 实例323 为列表框换装 7.6 滚动条控件 实例324 使用滚动条显示大幅位图 实例325 滚动条的新装 7.7...
  • 实例319 上下移动列表项的位置 实例320 实现标签式选择 实例321 要提示才能看得见 实例322 水平方向的延伸 实例323 为列表框换装 7.6 滚动条控件 实例324 使用滚动条显示大幅位图 实例325 滚动条的新装 7.7...
  • iPhone开发秘籍(第2版)--源代码

    热门讨论 2012-12-11 13:51:22
    此外,还结合实例讲解了如何开发各种iphone特性,包括视图、视图控制器、警告、表格、媒体、控件、人物、位置和事件。  《iphone开发秘籍(第2版)》适合iphone和mac开发人员。 作译者 作者:(美国)萨丹(Erica ...
  • 假设你返回的数据格式化之后该列附近数据有相同,则会自动合并成一个单元格,默认不开启合并。 autoCount table 开启显示统计行,设置autoCount为true,则该列可以自动统计,默认为false。 fixed fixed设置为...
  • C#全能速查宝典

    热门讨论 2014-04-26 16:16:27
    2.3.8 DomainUpDown控件——上下选择控件 195 2.3.9 DropDownStyle属性——指定组合框样式的值 197 2.3.10 GetItemCheckState方法——当前项的复选状态的值 198 2.3.11 GetItemText方法——指定项的文本表示形式 199...
  • 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他控件典型应用 ...
  • C#程序开发范例宝典(第2版).part02

    热门讨论 2012-11-12 07:55:11
    实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他控件典型...
  • C#程序开发范例宝典(第2版).part13

    热门讨论 2012-11-12 20:17:14
    实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他控件典型...
  • 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他控件典型...
  • 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他控件典型...
  • 程序开发范例宝典>>

    2012-10-24 10:41:28
    实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他...
  • 实例083 在DataGridView控件中实现合并单元格 116 实例084 在DataGridView控件中显示图片 118 实例085 为DataGridView控件实现复选功能 120 实例086 禁用DataGridView控件列表头自动排序 122 2.9 其他控件...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

如何合并上下单元格