python自动化之word操作

需要的库

python-docx

2.1.1新建空白word并插入文字

from docx import Document
#新建空白文档
doc_1=Document()
#添加标题(0相当于文章的题目,默认为1,级别范围为0-9)
doc_1.add_heading('新建空白文档标题,级别为0',level=0)
doc_1.add_heading('新建空白文档标题,级别为1',level=1)
doc_1.add_heading('新建空白文档标题,级别为2',level=2)
#新增段落
paragraph_1=doc_1.add_paragraph('这个第一段文字的开始\n请多多关照')
#加粗
paragraph_1.add_run('加粗字体').bold=True
paragraph_1.add_run('普通字体')
#斜体
paragraph_1.add_run('斜体字体').italic=True
#新段落(当前段落的下方)
paragraph_2=doc_1.add_paragrap('新起的第二段文字')
#新段落(指定端的上方)
prior_paragraph=paragraph_1.insert_paragraph_before('在第一段文字前插入的段落')
#添加分页符
doc_1.add_page_break()
#新段落
paraagraph_3=doc_1.add_paragraph('这是第二页第一段文字')
#保存文件(当前目录下)
doc_1.save('doc_1.docx')

2.2.1在操作之前,我们需要了解 Word 文档的页面结构 :

文档 - Document
段落 - Paragraph
文字块 - Run
以一个小案例为主线把文档、段落和文字块串一下

from docx import Document
from docx.shared import RGBColor,Pt,Inches,Cm
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
#新建文档
doc_1=Document()
# 字体设置(全局)
'''只更改font.name是不够的,还需要调用._element.rPr.rFonts的set()方法。'''
doc_1.styles['Normal'].font.name=u'宋体'
doc_1.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')
# 添加标题(0相当于文章的题目,默认级别是1,级别范围为0-9,0时候自动带下划线)
heading_1 = doc_1.add_heading('周杰伦',level = 0)
heading_1.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER#居中对齐,默认居左对齐
#新增段落
paragraph_1=doc_1.add_paragraph()
#设置段落格式:首行缩进0.75cm,居左,段后距离1英寸,1.5倍行距
paragraph_1.paragraph_format.first_line_indent=Cm(0.75)
paragraph_1.paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.LEFT
paragraph_1.paragraph_format.space_after=Inches(1.0)
paragraph_1.paragraph_format.line_spacing=1.5
text='中国台湾华语流行歌手、' \
       '音乐创作家、作曲家、作词人、' \
       '制作人、杰威尔音乐公司老板之一、导演。' \
       '近年涉足电影行业。周杰伦是2000年后亚洲流行乐坛最具革命性与指标' \
       '性的创作歌手,有“亚洲流行天王”之称。他突破原有亚洲音乐的主题、形' \
       '式,融合多元的音乐素材,创造出多变的歌曲风格,尤以融合中西式曲风的嘻哈' \
       '或节奏蓝调最为著名,可说是开创华语流行音乐“中国风”的先声。周杰伦的' \
       '出现打破了亚洲流行乐坛长年停滞不前的局面,为亚洲流行乐坛翻开了新的一页!'
r_1=paragraph_1.add_run(text)
r_1.font.size=Pt(10)#字号
r_1.font.bold=True#加粗
r_1.font.color.rgb=RGBColor(255,0,0)#颜色
#保存文件
doc_1.save('周杰伦.docx')

2.2.2字体设置
想在不同部分设置不同字体

from docx import Document
from docx.oxml.ns import qn
from docx.enum.style import WD_STYLE_TYPE
document=Document()
#设置宋体字样式
style_font=document.styles.add_style('宋体',WD_STYLE_TYPE.CHARACTER)
style_font.font.name='宋体'
document,styles['宋体']._element.rPr.rFonts.set(qn('w:eastAsia'),u'宋体')
#设置楷体字样式
style_font=document.styles.add_style('楷体',WD_STYLE_TYPE.CHARACTER)
style_font.font.name='楷体'
document.styles['楷体']._element.rPr.rFonts.set(qn('w:eastAsia'),u'华文中宋')
# 设置华文中宋字样式
style_font = document.styles.add_style('华文中宋', WD_STYLE_TYPE.CHARACTER)
style_font.font.name = '华文中宋'
document.styles['华文中宋']._element.rPr.rFonts.set(qn('w:eastAsia'), u'华文中宋')

paragraph1=document.add_paragraph()
run=paragraph1.add_run(u'aBCDefg这是中文',style='宋体') # 设置宋体样式
font = run.font #设置字体
font.name = 'Cambira' # 设置西文字体
paragraph1.add_run(u'aBCDefg这是中文', style='楷体').font.name = 'Cambira'
paragraph1.add_run(u'aBCDefg这是中文', style='华文中宋').font.name = 'Cambira'

document.save('字体设置1.docx')

参考博客:https://github.com/datawhalechina/team-learning-program/blob/master/OfficeAutomation/Task03%20python%E4%B8%8Eword.md

你可能感兴趣的:(自己学习)