docx通过占位符实现模版替换
doc = Document(self.path)
for paragraph in doc.paragraphs:
for j, tag in enumerate(tags):
if tag not in paragraph.text:
continue
else:
runs = paragraph.runs
for i, run in enumerate(runs):
if tag in run.text:
# 如果存在匹配得字符串,那么将当前得run替换成合并后得字符串
run.text = run.text.replace(tag, pvs[j])
else:
continue
for table in doc.tables:
for r, row in enumerate(table.rows):
for cell in row.cells:
for paragraph in cell.paragraphs:
for run in paragraph.runs:
for j, tag in enumerate(tags):
if tag in run.text:
run.text = run.text.replace(tag, pvs[j])
doc.save(path_output)
win32com,在表格指定位置行插入数据
word = Dispatch("Kwps.Application") doc = word.Documents.open(path_output) if name == '审核表' and up_data is not None: table = doc.Tables.Item(1) n = 0 for i in range(len(up_data)): for j in range(1, len(up_data[i])): table.Rows.Add(table.Rows[n + 5]) n = n + 1 table.Rows[n + 5].Delete() # 数据填充 row = 0 for i in range(len(up_data)): n = 1 first = table.Cell(row + 6, 1) for j in range(1, len(up_data[i])): n = n + 1 if n <= len(up_data[i]) - 1: next_cell = table.Cell(row + 7, 1) first.Merge(next_cell) first.Range.Text = up_data[i][0] first.Range.ParagraphFormat.Alignment = 1 row = row + 1 else: row = row + 1 for k in range(len(up_data[i][j])): if k == 1: s = up_data[i][j][k] + "≤" + up_data[i][j][k + 1] table.Cell(row + 5, 3).Range.Text = s elif k == 0: table.Cell(row + 5, 2).Range.Text = up_data[i][j][k] elif k == 3: table.Cell(row + 5, 4).Range.Text = up_data[i][j][k] else: continue