既excel自动生成程序之后,现在笔者现在发布word自动生成程序。
# 自动word生成器 20211226
from docx import Document
from docx.shared import Inches, Pt
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
import PySimpleGUI as sg
sg.theme('Dark Blue 3') # please make your windows colorful
frame1_layout = [
[sg.Text('对象名称', size=(10, 1)),sg.InputText('', key='对象名称', size=(10, 1))],
[sg.Checkbox('属性1',key='p1', size=(10, 1)),sg.Text('由', size=(5, 1)),sg.InputText('', key='原信息1', size=(10, 1)),sg.Text('变成', size=(5, 1)), sg.InputText('', key='新信息1', size=(10, 1))],
[sg.Checkbox('属性2',key='p2', size=(10, 1)),sg.Text('由', size=(5, 1)),sg.InputText('', key='原信息2', size=(10, 1)),sg.Text('变成', size=(5, 1)), sg.InputText('', key='新信息2', size=(10, 1))],
[sg.Checkbox('属性3',key='p3', size=(10, 1)),sg.Text('由', size=(5, 1)),sg.InputText('', key='原信息3', size=(10, 1)),sg.Text('变成', size=(5, 1)), sg.InputText('', key='新信息3', size=(10, 1))],
]
layout = [
[sg.Frame('请核对以下信息', frame1_layout , font='Any 12', title_color='blue')],
#[sg.FilesBrowse('选择模板文件',file_types=(("xlsx Files", "*.xlsx"),("xls Files", "*.xls"))) , sg.InputText('', key='模板目录', size=(47, 1))],
#[sg.FolderBrowse('选择输出路径'), sg.InputText('', key='输出目录', size=(47, 1))],
[sg.Text('文件名', size=(10, 1)), sg.InputText('生成的文件', key='文件名', size=(48, 1)),sg.Text('', size=(10, 1))],
[sg.Submit('确定'), sg.Cancel('关闭')],
[sg.Text('版权所有,他用必究!', size=(30, 1), font=('Helvetica', 10), justification='center', key='text2')],
]
#
window = sg.Window('word自动生成工具', layout)
#事件循环
while True:
event, values = window.read()
print(event)
if event == sg.WIN_CLOSED or event == '关闭': #判断是否点击Cancel按钮
break
elif event == '确定' and (values['文件名'] != ''):
out_path = values['文件名']+'.docx'
document = Document()
##########################################################################
j=0
for i in range(3):
if values['p'+str(i+1)]:
j=j+1
if j>1:
# 下一页
document.add_page_break()
title=values['对象名称']
msg1=values['原信息'+str(i+1)]
msg2=values['新信息'+str(i+1)]
# 标题
p=document.add_paragraph()
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
x=p.add_run(title)
x.font.size = Pt(27.5)
x.font.name = '宋体' # 思源字体
x.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
# 内容
p=document.add_paragraph()
x=p.add_run('属性'+str(i+1)+':由'+msg1+'变成'+msg2+'。')
x.font.size = Pt(10.5)
x.font.name = '宋体' # 思源字体
x.element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
if j>0:
# 保存文档
document.save(out_path)
sg.Popup('已保存:'+out_path)
else:
sg.Popup('没有选择要修改的属性,所以无文件生成!')
else:
sg.Popup('请先设置好模版文件和输出路径。')
##########################################################################
window.close()