共计 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()
正文完