Python批量生成Word邀请函

20次阅读
没有评论

共计 1639 个字符,预计需要花费 5 分钟才能阅读完成。

名单

姓名 性别 身份
张三 嘉宾
李四 媒体
王五 嘉宾

实现代码

from docx import Document  # 创建文档
from docx.oxml.ns import qn  # 中文
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT  # 段落
from docx.shared import Pt, RGBColor, Mm, Cm  # 大小磅数 / 字号
from openpyxl import load_workbook

def template(name, sex, types):
    """
    创建模板
    - 先生 / 女士
    - 嘉宾 / 媒体
    """
    word = Document()  # 创建 word 文档对象
    word.styles['Normal'].font.name = u'微软雅黑'
    word.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')

    # 段落 1
    p1 = word.add_paragraph()
    p1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    # 添加文字
    run_text_1 = p1.add_run('客户大会')
    run_text_1.font.size = Pt(20)
    if types == '媒体':
        run_text_1.font.name = u'宋体'
        run_text_1._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

    # 段落 2
    p2 = word.add_paragraph()
    p2.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    # 添加文字
    run_text_2 = p2.add_run('邀请函')
    run_text_2.font.size = Pt(36)

    # 段落 customer
    p_customer = word.add_paragraph()
    p_customer.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT
    # 添加文字
    if types == '嘉宾':
        run_text_c = p_customer.add_run(f'尊敬的 {name} {sex}')
    else:
        run_text_c = p_customer.add_run(f'尊敬的 {name} 老师')
        run_text_c.font.color.rgb = RGBColor(177, 23, 79)
    run_text_c.font.size = Pt(20)

    # 段落 3
    p3 = word.add_paragraph()
    # 添加文字
    run_text_3 = p3.add_run('诚邀您参加由大学组织的客户答谢会。请于 2022 年 10 月 10 日在大学总部准时出席。')
    run_text_3.font.size = Pt(16)
    # 首行缩进
    p3.paragraph_format.first_line_indent = Cm(0.74)

    # 段落 4 公司 logo
    p4 = word.add_paragraph()
    p4.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    # 添加文字
    run_text_4 = p4.add_run()
    run_text_4.add_picture('logo.jpg', width=Mm(40))
    if types == '嘉宾':
        word.save(f'VIP/{name}.docx')
    else:
        word.save(f'Media/{name}.docx')

def main():
    wb = load_workbook('list.xlsx')
    ws = wb.worksheets[0]
    for r in list(ws.iter_rows())[1:]:
        row = [data.value for data in r]
        if row[1] == '男':
            sex = '先生'
        else:
            sex = '女士'
        template(row[0], sex, row[2])

if __name__ == '__main__':
    main()

正文完
post-qrcode
 0
三毛
版权声明:本站原创文章,由 三毛 于2023-08-17发表,共计1639字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)