吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2050|回复: 18
收起左侧

[Python 原创] 在Word表格中将上下行相同内容的单元格自动合并

[复制链接]
Eks6666 发表于 2023-12-20 14:37
[Python] 纯文本查看 复制代码
#定义合并单元格的函数    
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))


from docx import Document
doc = Document("收货记录.docx")
#读取word文档中的第一个表格的第二和第三列除标题和尾部总数行的数据
table = doc.tables[0] #已确定是第一个表格,其索引是0
supplier = [] #存储供应商名称
pn = [] #存储物料编码
max_row = len(table.rows) #获取第最大一行

#读取第二行到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)

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

#重新往第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")

免费评分

参与人数 1吾爱币 +7 热心值 +1 收起 理由
苏紫方璇 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

sscnc 发表于 2023-12-20 15:20
本帖最后由 sscnc 于 2023-12-20 15:21 编辑

是这样吗?

image.png
xfmiao 发表于 2023-12-20 15:45
alancxl 发表于 2023-12-20 16:04
合并,按说应该是累加,不是删除。
是这个意思吗?
869175743 发表于 2023-12-20 16:09
你这跟灌水没啥区别了
sheee 发表于 2023-12-20 16:16

又学一招,很实用
jinos 发表于 2023-12-20 16:50
厉害了。学习一下。
vethenc 发表于 2023-12-20 17:36

你坐下说话
FruitBaby 发表于 2023-12-20 18:39
全局遍历的方式?
tiduck 发表于 2023-12-20 18:40
有一定用处
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 18:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表