【python办公自动化(15)】python编程实现Word文档内容样式批量调整(会议议程模板的创建)

对文字字体样式进行修改

run.font.样式 = xxx

import os
os.chdir('D:\\python_major\\auto_office15')
from docx import Document
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn


doc = Document('这是一个文档.docx')
for paragraph in doc.paragraphs:
	for run in paragraph.runs:
		run.font.bold = True
		run.font.italic = True
		run.font.underline = True
		run.font.strike = True
		run.font.shadow = True
		run.font.size = Pt(20)
		run.font.color.rgb = RGBColor(255,255,0)
		run.font.name = '微软雅黑'
		r = run._element.rPr.rFonts
		r.set(qn('w:eastAsia'),'微软雅黑')
		#如果是中文的话,这样设定字体

doc.save('这是一个程序创建的文档.docx')

–> 输出结果为:注意这里的对齐方式是和原文档的格式一样,原文档如果是左对齐那么生成的文档也是左对齐
在这里插入图片描述

段落样式的修改

对齐样式

paragraph.alignment = 对齐方式

可选的对齐方式有:LEFT、CENTER、RIGHT、JUSTIFY、DISTRIBUTE、JUSTIFY_MED、JUSTIFY_HI、JUSTIFY_LOW、THAI_JUSTIFY

from docx.enum.text import WD_ALIGN_PARAGRAPH

paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER

行间距的调整

line_spacing = xx

注意使用浮点数,比如2.0就是表示两倍行间距

paragraph.paragraph_format.line_spacing = 2.0

段前与段后间距

space_before/space_after = Pt(xx)

Pt(12) 表示12磅

paragraph.paragraph_format.space_before = Pt(12) 
paragraph.paragraph_format.space_after = Pt(12) 

综合应用

编写一个程序,要求

(1)读取会议模板.txt文件

(2)根据其中的内容生成一个格式化后的文档

(3)第一行为标题,要求居中且字体字号为18,加粗,微软雅黑

(4)罗马数字开头的行如I.、ll.等,要求字体字号为14,加粗,微软雅黑

(5)其它内容要求字体字号为12,微软雅黑

(6)可自行设计更丰富的样式

扫描二维码关注公众号,回复: 8976634 查看本文章

(7)将文件保存为会议模板.docx

提示: 文本数据内容如下

在这里插入图片描述

参考代码

步骤一、前期准备

import os
os.chdir('D:\\python_major\\auto_office15')
import datetime
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
doc = Document()

该部分代码完成的功能是:设置程序运行路径、导入相关的库和创建一个doc实例

步骤二、将txt文本数据处理后提取到列表

ls = []
with open("会议模板.txt","r",encoding = "utf-8") as f:
	for line in f.readlines():
		line = line.strip()
		ls.append(line)

print(ls)

–> 输出结果为:

[‘会议议程’, ‘与会者: 姓名’, ‘I.\t宣布开会’, ‘主持人姓名于日期时间在地点宣布召开组织/会员会名称的例会。’, ‘II.\t点名’, ‘干事姓名进行了点名。与会人员如下:与会者姓名’, ‘III.\t批准上次会议的纪要’, ‘干事姓名宣读了上次会议的纪要。在宣读时批准了纪要。’, ‘IV.\t未决问题’, ‘a)\t未决问题/讨论总结’, ‘b)\t未决问题/讨论总结’, ‘c)\t未决问题/讨论总结’, ‘V.\t新业务’, ‘a)\t新业务/讨论总结’, ‘b)\t新业务/讨论总结’, ‘c)\t新业务/讨论总结’, ‘VI.\t休会’, ‘主持人姓名在时间宣布休会。’, ‘纪要提交者:姓名’, ‘纪要审批者:’]

步骤三、设置标题样式

当然这一步也可以直接在合并在步骤四种,最终的代码进行合并了

paragraph_1 = doc.add_heading(ls[0],level = 1)
paragraph_1.alignment = WD_ALIGN_PARAGRAPH.CENTER
for run in paragraph_1.runs:
	#print(run.text)
	run.font.size = Pt(18)
	run.font.color.rgb = RGBColor(0,0,0)
	run.font.bold = True
	run.font.name = '微软雅黑'
	r = run._element.rPr.rFonts
	r.set(qn('w:eastAsia'),'微软雅黑')

步骤四、设置段落样式并保存文件

罗马字符的标识在所给的数据里面有个很明显的标识就是都有 ‘.’,这也就成为了区分目标行和普通行的区别

for item in ls[1:]:
	if '.' in item:
		paragraph = doc.add_paragraph(item)
		for run in paragraph.runs:
			run.font.size = Pt(14)
			run.font.bold = True
			run.font.name = '微软雅黑'
			r = run._element.rPr.rFonts
			r.set(qn('w:eastAsia'),'微软雅黑')
	else:
		paragraph = doc.add_paragraph(item)
		for run in paragraph.runs:
			run.font.size = Pt(12)
			run.font.name = '微软雅黑'
			r = run._element.rPr.rFonts
			r.set(qn('w:eastAsia'),'微软雅黑')

doc.save("会议模板.docx"
print("模板文件已经生成\n\n文件位置在:{}\n\n文件名称为:会议模板.docx".format(os.getcwd()))

–> 输出结果为:
在这里插入图片描述

全部代码及输出结果

这里将步骤三和步骤四合并

import os
os.chdir('D:\\python_major\\auto_office15')
import datetime
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import Pt, RGBColor
from docx.oxml.ns import qn
doc = Document()

ls = []
with open("会议模板.txt","r",encoding = "utf-8") as f:
	for line in f.readlines():
		line = line.strip()#去除换行符
		ls.append(line)

print(ls)

for item in ls:
	if item == '会议议程':
		paragraph_1 = doc.add_heading(ls[0],level = 1)
		paragraph_1.alignment = WD_ALIGN_PARAGRAPH.CENTER
		for run in paragraph_1.runs:
			run.font.size = Pt(18)
			run.font.color.rgb = RGBColor(0,0,0)
			run.font.bold = True
			run.font.name = '微软雅黑'
			r = run._element.rPr.rFonts
			r.set(qn('w:eastAsia'),'微软雅黑')
	elif '.' in item:
		paragraph = doc.add_paragraph(item)
		for run in paragraph.runs:
			run.font.size = Pt(14)
			run.font.bold = True
			run.font.name = '微软雅黑'
			r = run._element.rPr.rFonts
			r.set(qn('w:eastAsia'),'微软雅黑')
	else:
		paragraph = doc.add_paragraph(item)
		for run in paragraph.runs:
			run.font.size = Pt(12)
			run.font.name = '微软雅黑'
			r = run._element.rPr.rFonts
			r.set(qn('w:eastAsia'),'微软雅黑')

doc.save("会议模板.docx")

print("模板文件已经生成\n\n文件位置在:{}\n\n文件名称为:会议模板.docx".format(os.getcwd()))

–> 输出结果为:
在这里插入图片描述

发布了37 篇原创文章 · 获赞 10 · 访问量 4632

猜你喜欢

转载自blog.csdn.net/lys_828/article/details/104122219
今日推荐