为什么这串代码替换不了obj的内容。from openpyxl import load_workbook from docx import Document # 打开 Excel 文件 wb = load_workbook('data.xlsx') ws = wb.active # 打开 Word 模板文件 document = Document('template.docx') # 遍历 Excel 表格并填充 Word 模板 for row in ws.iter_rows(min_row=2, values_only=True): name, obj = row # 复制模板段落并插入数据 new_paragraph = document.add_paragraph() for run in document.paragraphs[0].runs: new_run = new_paragraph.add_run(run.text) if '{{name}}' in run.text: new_run.text = new_run.text.replace('{{name}}', name) elif '{{obj}}' in run.text: new_run.text = new_run.text.replace('{{obj}}', obj) # 保存 Word 文档 document.save('output.docx')
时间: 2023-06-19 14:06:59 浏览: 188
这段代码可以替换 `name` 的内容,但无法替换 `obj` 的内容是因为 `obj` 可能是一个元组或列表,而这些类型无法直接传递给 `new_run.text` 方法。解决方法是将 `obj` 转换为字符串,例如使用 `str()` 函数。修改后的代码如下:
```
from openpyxl import load_workbook
from docx import Document
# 打开 Excel 文件
wb = load_workbook('data.xlsx')
ws = wb.active
# 打开 Word 模板文件
document = Document('template.docx')
# 遍历 Excel 表格并填充 Word 模板
for row in ws.iter_rows(min_row=2, values_only=True):
name, obj = row
# 复制模板段落并插入数据
new_paragraph = document.add_paragraph()
for run in document.paragraphs[0].runs:
new_run = new_paragraph.add_run(run.text)
if '{{name}}' in run.text:
new_run.text = new_run.text.replace('{{name}}', name)
elif '{{obj}}' in run.text:
new_run.text = new_run.text.replace('{{obj}}', str(obj))
# 保存 Word 文档
document.save('output.docx')
```
阅读全文