python docx批量修改word中的表格

作为测试人员要出一份测试记录,测试记录文档要在测试用例增加一些内容,包括:执行结果、

 执行状态、测试人员、测试时间、实测结果。每一条用例都要增加以上的内容,而且一个测试记录文档几百条用例,全都是重复工作,word自带的替换不能替换两个不同单元格里的内容,用python的docx库写了个脚本

第一层for循环遍历文档里所有表格,在遍历每一个单元格,识别到单元格内容为

执行结果、执行状态、测试人员、测试时间 就在边上的单元格写内容。识别到单元格内容为 实测结果,就列数+1,判断一下是否为空,为空就写 与实测结果一致。

 执行完脚本后就把所有的测试用例空白的内容填写好


from docx import Document
from docx.shared import Inches
import  os,re

def xiugai():
    tables=document.tables
    for tb in document.tables:

        ii=0
        jj=0
        
        for i in tb.rows:
            jj=0
            
            for j in tb.columns:
                try:
                    if tb.cell(ii,jj).text == "执行结果":
                        cc=jj+1
                        if len(tb.cell(ii,cc).text)==0:
                            tb.cell(ii,cc).text = ("通过")
                            print(ii,jj,tb.cell(ii,jj).text)
                    elif tb.cell(ii,jj).text == "执行状态":
                        cc=jj+1
                        if len(tb.cell(ii,cc).text)==0:
                            tb.cell(ii,cc).text = ("已执行")
                            print(ii,jj,tb.cell(ii,jj).text)
                    elif tb.cell(ii,jj).text == "测试人员":
                        cc=jj+1
                        if len(tb.cell(ii,cc).text)==0:
                            tb.cell(ii,cc).text = ("aa")
                            print(ii,jj,tb.cell(ii,jj).text)
                    elif tb.cell(ii,jj).text == "测试时间":
                        cc=jj+1
                        if len(tb.cell(ii,cc).text)==0:
                            tb.cell(ii,cc).text = ("2022年4月18日")
                            print(ii,jj,tb.cell(ii,jj).text)
                except:
                    print("error")
                    tb.cell(ii-1,jj-1).text = ("error")
                    break
                        
                if jj<len(tb.columns)-1:
                    jj=jj+1
            if ii<len(tb.rows)-1:
                ii=ii+1
def shicejieguo():
    tables=document.tables
    for tb in document.tables:

        ii=0
        jj=0
        
        for i in tb.rows:
            jj=0
            
            for j in tb.columns:
                try:
                    if tb.cell(ii,jj).text == "实测结果":
                        for dd in range(100):
                            cc=ii+dd+1
                      
                            if len(tb.cell(cc,jj).text)==0:
                                tb.cell(cc,jj).text = ("与期望结果一致")
                                print(cc,jj,tb.cell(ii,jj).text)
                            else:
                                break
                except:
                    print("error")
                    tb.cell(ii-1,jj-1).text = ("error")
                    break
                if jj<len(tb.columns)-1:
                    jj=jj+1
            if ii<len(tb.rows)-1:
                ii=ii+1
    


if __name__ == "__main__":
    document = Document(r'C:\Users\Desktop\记录.docx')
    shicejieguo()
    xiugai()

    
    document.save('修改后的报告.docx')

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值