有A、B、Cdocx 如果xlsx的sheet2中C2不为空,则调用并合并A、Bdocx。 如果xlsx的sheet2中C3不为空,则调用并合并A、B、Cdocx。 避免当C2、C3同时不为空时,重复合并docx
时间: 2024-01-14 22:02:28 浏览: 130
合并docx文件
你可以使用一个变量来记录是否已经合并过docx文件,然后根据该变量的状态来判断是否需要再次合并。可以像下面这样修改你的代码:
```
import os
from openpyxl import load_workbook
import docx
# 合并docx文件
def merge_docx(file_list, merged_file_name):
# 如果合并后的文件已存在,则直接返回
if os.path.exists(merged_file_name):
return
# 创建合并后的文档对象
merged_doc = docx.Document()
# 合并文件内容
for file_name in file_list:
doc = docx.Document(file_name)
for para in doc.paragraphs:
merged_doc.add_paragraph(para.text)
for table in doc.tables:
merged_doc.add_table(table.rows, table.columns)
# 保存合并后的文档
merged_doc.save(merged_file_name)
# 读取Excel文件
workbook = load_workbook(filename=r'D:\好记薪\工商资料生成\表格.xlsx')
sheet = workbook['Sheet2']
# 记录是否已经合并过docx文件
docx_merged = False
# 判断C列是否为空
if sheet['C2'].value:
# 合并A、B文档
merge_docx(['A.docx', 'B.docx'], 'AB.docx')
docx_merged = True
if sheet['C3'].value and not docx_merged:
# 合并A、B、C文档
merge_docx(['A.docx', 'B.docx', 'C.docx'], 'ABC.docx')
docx_merged = True
```
在这个例子中,我们使用`docx_merged`变量来记录是否已经合并过docx文件。如果`C2`列不为空,则合并`A.docx`和`B.docx`文件,并将`docx_merged`设置为`True`。如果`C3`列不为空并且`docx_merged`为`False`,则合并`A.docx`、`B.docx`和`C.docx`文件,并将`docx_merged`设置为`True`。这样就可以避免当`C2`、`C3`同时不为空时重复合并docx文件。
阅读全文