如何解决有条件的Mergefields做邮件合并
我想有人解释我或给我一个指导,以便进行Mailmerge,但要有条件的合并域(将信息从Excel传递到Word),在我的第一次尝试中,我曾想过使用Word Mail Merge Tool,但我没有不知道如何管理包含以下结构的复杂合并:
所以我必须创建一个邮件合并,但是在出现的每一年中,我都必须按年份对它们进行分组,所以我有多行,因此必须用年份的可变数据来限制每个页面的内容。
.docx中显示的信息也应填充为两行,直到两列(如果其中一列已满)。
我尝试使用Python进行邮件合并,但出现以下错误,您能帮我解决这个问题吗?我收到以下错误:
Traceback (most recent call last):
File "C:\Users\yahol\Documents\Imp Predial\Spool 200\TestMerge.py",line 32,in <module>
document.merge_templates(finalList,'page_break')
File "C:\Users\yahol\anaconda3\lib\site-packages\mailmerge.py",line 234,in merge_templates
self.merge(parts,**repl)
File "C:\Users\yahol\anaconda3\lib\site-packages\mailmerge.py",line 254,in merge
self.__merge_field(part,field,replacement)
File "C:\Users\yahol\anaconda3\lib\site-packages\mailmerge.py",line 266,in __merge_field
text_parts = text.replace('\r','').split('\n')
AttributeError: 'float' object has no attribute 'replace'
我的Python代码如下:
from __future__ import print_function
from mailmerge import MailMerge
from datetime import date
import xlrd
import sys
import os
current_row = 0
sheet_num = 0
template = 'Cuenta_Cobro_Template.docx'
document = MailMerge(template)
print("Fields included in {}: {}".format(template,document.get_merge_fields()))
book = xlrd.open_workbook('ReciboDB.xlsx')
work_sheet = book.sheet_by_index(sheet_num)
finalList = []
headers = []
num_rows = work_sheet.nrows
while (current_row < num_rows):
dictVal=dict()
if(current_row==0):
for col in range(work_sheet.ncols):
headers.append(work_sheet.cell_value(current_row,col))
else:
for col in range(work_sheet.ncols):
dictVal.update({headers[col]:work_sheet.cell_value(current_row,col)})
if(current_row!=0):
finalList.append(dictVal)
current_row+=1
document.merge_templates(finalList,'page_break')
document.write("Output.docx")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。