目录
1 初步认识
doxc
库:python 处理 Word 需要用到 python-docx 库- 安装
doxc
库:pip3 install python-docx
2 Word操作
2.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_paragraph('新起的第二段文字。') # 新段落(指定端的上方) prior_paragraph = paragraph_1.insert_paragraph_before('在第一段文字前插入的段落') # 添加分页符(可以进行灵活的排版) doc_1.add_page_break() # 新段落(指定端的上方) paragraph_3 = doc_1.add_paragraph('这是第二页第一段文字!') # 保存文件(当前目录下) doc_1.save('doc_1.docx')
2.2 Word具体操作
2.2.1 整体页面介绍
- Word文档页面结构:
- 文档-Document
- 段落-Paragraph
- 文字块-Run
python-docx
下Word文档结构:python-docx
将整个文章看做是一个document对象- 每个 document 包含多个代表‘’段落‘’的 paragraph 对象,存放在
document.paragraphs
中 - 每个 Paragraph 都有许多个代表"行内元素"的 Run 对象,存放在
paragraph.runs
中
注意:在
python-docx
中,run
是最基本的单位,每个run
对象内的文本样式都是一致的,也就是说,在从docx
文件生成文档对象时,python-docx
会根据样式的变化来将文本切分为一个个的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 # 引入中文字体设置模块 # 新建文档(Datawhale) 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.0英寸,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.fo