Python操作word文档的示例详解
本文详细介绍如何使用Python的python-docx库创建和操作Word文档。内容涵盖文档创建、标题与段落添加、图片与表格插入、列表处理、样式设置(字体、颜色、对齐方式)以及页眉页脚配置。特别提示doc与docx格式差异及模块安装方法,提供完整代码示例与参数说明,适用于自动化办公场景。
写在前面
使用 python-docx 库时需注意,它不支持旧的 .doc 格式文档。若需处理 .doc 文件,必须预先通过 Word 等软件将其转换为 .docx 格式。两者存在本质区别:.doc 是二进制格式,而 .docx 基于 XML 结构。
安装模块的命令为 pip install python-docx 。
开发前需准备以下资源链接:
- 官方文档地址:https://python-docx.readthedocs.io/en/latest/index.html
- PyPI 官方仓库地址:https://pypi.org/project/python-docx/
资源准备就绪后,即可开始编写代码。
创建一个文档
首要需求是创建一个新的 Word 文档,并向其中写入各类信息。
首先实现添加标题的功能。
请留意代码中 add_heading() 函数的具体用法。
from docx import Document
# 创建 Document 对象,等价于在电脑上打开一个 Word 文档
document = Document()
# 在 Word 文档中添加一个标题
document.add_heading('这是一个标题',level=0)
# 保存文档
document.save('demo.docx')添加文字段落
注意代码中 add_paragraph() 函数用于添加段落,随后使用 add_run() 方法追加文本内容。
from docx import Document
# 创建 Document 对象,等价于在电脑上打开一个 Word 文档
document = Document()
# 在 Word 文档中添加一个标题
document.add_heading('这是一个标题', level=0)
# 文档添加段落
p = document.add_paragraph('这是白给的段落')
# 添加带样式的文字
# 添加段落,文本可以包含制表符(\t)、换行符(\n)或回车符(\r)等
# add_run() 在段落后面追加文本
p.add_run('\n我倾斜了').italic = True # 添加一个倾斜文字
p.add_run('\n我加粗了').bold = True # 添加一个加粗文字
# 保存文档
document.save('demo.docx')在现有段落前插入文字。
p.add_run('\n我倾斜了').italic = True # 添加一个倾斜文字
p.add_run('\n我加粗了').bold = True # 添加一个加粗文字
# 段落前面插入内容
prep_p = p.insert_paragraph_before('段落之前插入内容')段落还支持添加分页符,具体代码如下:
# 段落前面插入内容
prep_p = p.insert_paragraph_before('段落之前插入内容')
document.add_page_break()
p1 = document.add_paragraph('新页新段落')
列表的添加
无序列表的添加方法。
# 添加列表(前面一个小圆点)
document.add_paragraph('我前面是小圆点', style='List Bullet')
# 添加列表(前面一个小圆点)
document.add_paragraph('第二个小圆点', style='List Bullet')有序列表的添加方法。
# 添加列表(前面数字)
document.add_paragraph('我前面是数字', style='List Number')
# 添加列表(前面数字)
document.add_paragraph('第二个数字', style='List Number')图片的添加
Document 对象提供的方法如下:
add_heading(self, text='', level=1):添加标题;add_page_break(self):添加分页符;add_paragraph(self, text='', style=None):添加段落;add_picture(self, image_path_or_stream, width=None, height=None):添加图片;add_section(self, start_type=2):添加节;add_table(self, rows, cols, style=None):添加表格;
本节重点学习 add_picture() 方法。
document.add_picture(r"../9.png", width=Inches(1))在 add_picture() 函数中,参数 image_path_or_stream 可接受相对路径、绝对路径或图片数据流。上述代码中 Inches 单位表示英寸。此外,python-docx 库还提供了厘米单位(Cm),例如设置 1 厘米可写为 Cm(1)。使用前需提前导入 from docx.shared import Inches, Cm 。
表格添加
使用 add_table() 函数,可以在 Word 文档中插入表格。
p1 = document.add_paragraph('新页新段落')
# 添加一个 2×2 表格
table = document.add_table(rows=2, cols=2)
# 获取第1行第2列单元格
cell = table.cell(0, 1)
# 设置单元格文本
cell.text = '第1行第2列'
# 获取第2行
row = table.rows[1]
row.cells[0].text = '橡皮擦'
row.cells[1].text = '乔喻'学习时请仔细查看相关代码注释,以便掌握该部分内容。
相关样式设置
设置格式需使用 add_run() ,直接使用 add_paragraph() 生成的段落无法直接设置字体等样式。
# 模块的导入
from docx.shared import Pt, Cm, Inches
from docx.oxml.ns import qn
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx.shared import RGBColor
# 一级标题 level=0
head0 = document.add_heading(level=0)
# 标题居中
head0.alignment = WD_ALIGN_PARAGRAPH.CENTER
title_run = head0.add_run('这是一个居中的标题', )
title_run.font.size = Pt(24)
# 标题英文字体
title_run.font.name = 'Times New Roman'
# 标题中文字体
title_run.element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')
# 字体颜色
title_run.font.color.rgb = RGBColor(4, 60, 169)其中 WD_ALIGN_PARAGRAPH 对象表示段落的对齐方式,其可选值包括:
WD_ALIGN_PARAGRAPH. LEFT:左对齐;WD_ALIGN_PARAGRAPH. CENTER:居中对齐;WD_ALIGN_PARAGRAPH. RIGHT:右对齐;WD_ALIGN_PARAGRAPH. JUSTIFY:两端对齐;
行距与段间距通过 line_spacing 属性设置,space_before 表示段前间距,space_after 表示段后间距。
斜体、下划线及粗体设置。
font.italic = True #设置斜体
font.underline = True #设置下划线
font.bold = True #设置粗体首行缩进通过 paragraph_format_line_indent 设置缩进值。
其他设置:除上述内容外,还可通过 document.styles.add_style('textstyle', WD_STYLE_TYPE. PARAGRAPH) 配合 add_style() 方法创建新样式对象,后续即可通过其属性进行样式配置。设置字体大小使用 font.size ,设置字体颜色使用 font.color 。
在添加段落时,即可应用该自定义样式。
from docx.shared import RGBColor
from docx.enum.style import WD_STYLE_TYPE
style = document.styles.add_style('textstyle', WD_STYLE_TYPE.PARAGRAPH)
# 字体大小
style.font.size = Pt(16)
# 字体颜色
style.font.color.rgb = RGBColor(66, 100, 0)
p1 = document.add_paragraph('神人橡皮擦',style=style)页眉和页脚
页眉和页脚可直接设置,参考代码如下:
header = document.sections[0].header
header.add_paragraph('橡皮擦的页眉')页脚设置
footer = document.sections[0].footer到此这篇关于Python操作word文档的示例详解的文章就介绍到这了,更多相关Python操作word文档内容请搜索本站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本站!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













