微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有条件的Mergefields做邮件合并

如何解决有条件的Mergefields做邮件合并

我想有人解释我或给我一个指导,以便进行Mailmerge,但要有条件的合并域(将信息从Excel传递到Word),在我的第一次尝试中,我曾想过使用Word Mail Merge Tool,但我没有不知道如何管理包含以下结构的复杂合并:

Years

所以我必须创建一个邮件合并,但是在出现的每一年中,我都必须按年份对它们进行分组,所以我有多行,因此必须用年份的可变数据来限制每个页面内容

ID

.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 举报,一经查实,本站将立刻删除。