from docx import Document
from docx.enum.table import WD_TABLE_ALIGNMENT
import office
# 1、先将非表格的数据填入模板生成word
data = {'title':"冒烟报告",
'test_context': 'XXXXX',
'text_range1': "XXX",
'text_range2': "XXX",
'text_range3': "XXX",
'risk': '无',
'pass': "通过"}
# 以 template3.docx 为模板,创建 output.docx 文件
wd = office.open_file("1111.docx",template="模块.docx")
#填入数据data, 保存
wd.fill(data).save()
# 2、在生成的Word文档中添加表格
doc = Document('1111.docx')
#word文本中的段落数
#print(len(doc.paragraphs))
table_index = 7 # 表格所在段落的索引
row_count = 4 # 表格行数
column_count = 4 # 表格列数
# 在指定段落后插入表格
paragraph=doc.paragraphs[table_index]
table = doc.add_table(rows=row_count, cols=column_count)
# 将表格对象插入到指定段落的后面
if table_index >= len(doc.paragraphs):
doc.add_paragraph().add_run().add_table(rows=row_count, cols=column_count)
else:
paragraph._element.addnext(table._tbl)
# 可以设置表格的对齐方式(可选)
table.alignment = WD_TABLE_ALIGNMENT.CENTER
#表头数据
table.cell(0, 0).text = '用例名称'
table.cell(0, 1).text = '预期结果'
table.cell(0, 2).text = '实际结果'
table.cell(0, 3).text = '是否通过'
# 填充数据
data = [
['数据1', '数据2', '数据3', '数据3'],
['数据4', '数据5', '数据6', '数据3'],
['数据7', '数据8', '数据9', '数据3']
]
print(len(data))
if len(data):
for i in range(1,row_count):
for j in range(column_count):
# 在指定的单元格位置添加文本
print(data[i-1][j])
table.cell(i, j).text = data[i-1][j]
else:
raise ValueError("data数组超出范围")
# 保存文档
doc.save('111模块.docx')
# word转pdf
office.open_file('111模块.docx').save("111模块.pdf")
需要准备模板,如下图所示: