python docx批量修改word中的表格

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

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

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

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

如下图为未填写的用例

《python docx批量修改word中的表格》

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


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 = ("郝")
                            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\lilyh\Desktop\确认测试记录.docx')
    shicejieguo()
    xiugai()

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

    原文作者:liehongqiang4494
    原文地址: https://blog.csdn.net/liehongqiang4494/article/details/126286757
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞