百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python操作Word文档神器:python-docx库从入门到精通

off999 2025-07-07 22:16 62 浏览 0 评论

Python操作Word文档神器:python-docx库从入门到精通


动动小手,点击关注,感谢您的阅读,您的关注是我最大的动力!!!!


在办公自动化场景中,处理 Word 文档是常见需求。python-docx库让你无需手动操作,即可通过 Python 代码轻松创建、修改和解析 Word 文档(.docx 格式)。本文将带你掌握其核心功能,并通过实用案例提升你的办公效率!

一、基础操作:创建与打开文档

1. 创建新文档

核心函数

  • Document():创建一个空白的 Word 文档对象。
  • add_heading(text,level=1):添加标题。level从0到9,默认为1;0为文章标题,大于1的为小标题。
  • add_paragraph(text):添加段落。
  • save(path):保存文档。生成的文件为.docx 格式,而非 .doc。

案例:创建简单的文档

from docx import Document

# 创建文档对象
doc = Document()

# 添加标题(级别1)
doc.add_heading('欢迎使用Python生成文档', level=1)

# 添加段落
doc.add_paragraph('这是使用python-docx库自动生成的文档。')
doc.add_paragraph('下面将展示更多功能...')

# 保存文档
doc.save('python-doc.docx')

2. 打开并修改现有文档

核心函数

  • Document('path.docx'):打开现有文档。
  • 属性paragraphs:获取所有段落对象(不是段落的内容)到列表,可通过段落对象的text属性获取段落内容,并支持修改内容。

案例:在已有文档中添加内容

from docx import Document

# 打开现有文档
doc = Document('python-doc.docx')

# 添加新段落
doc.add_paragraph('新增内容:这是后续添加的段落。')

# 修改第一段内容
doc.paragraphs[0].text = '更新后的标题:Python办公自动化'

# 保存修改
doc.save('updated.docx')

闭坑指南

操作前确保文档未被其他程序(如 Word)打开,否则会抛出权限错误。

二、文本格式化:段落、字体与样式

1. 段落格式化

核心函数

  • add_paragraph(text):添加段落。
  • add_run(text):在段落中添加文本块(可单独设置格式)。
  • alignment:设置段落对齐方式(0 = 左对齐,1 = 居中,2 = 右对齐)。

可以引用from docx.enum.text import WD_PARAGRAPH_ALIGNMENT,对应属性值如下:

案例:创建带格式的段落

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

doc = Document()

# 添加居中对齐的标题
title = doc.add_heading(level=1)
title_run = title.add_run('居中标题')
title.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  #设置CENTER居中

# 添加带格式的段落
p = doc.add_paragraph()
p.add_run('加粗文本').bold = True #设置为加粗
p.add_run(' 普通文本 ')
p.add_run('斜体文本').italic = True   #设置为斜体

# 右对齐段落
p.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT  #设置RIGHT靠右

doc.save('formatted.docx')

2. 字体样式设置

核心函数

函数 / 属性

功能描述

font.name

设置字体名称(如:'宋体'、'微软雅黑'、'黑体'、'Arial')

font.size

设置字体大小(单位:磅,如:Pt(12))

font.bold

设置加粗(True/False)

font.italic

设置斜体(True/False)

font.underline

设置下划线(True/False 或线型样式)

font.color.rgb

设置字体颜色(如:RGBColor(255, 0, 0),初始化3个int值(0-255),分别代表红,绿,蓝)

font.strike

设置删除线(True/False)

font.subscript

设置下标(True/False)

font.superscript

设置上标(True/False)

1. 基础字体设置

from docx import Document
from docx.shared import Pt
from docx.shared import RGBColor

doc = Document()
p = doc.add_paragraph()

# 添加文本并设置字体
run = p.add_run('这是宋体,16磅,加粗,红色')
run.font.name = '宋体'
run.font.size = Pt(16)
run.font.bold = True
run.font.color.rgb = RGBColor(255, 0, 0)

# 添加另一段文本,设置不同字体
run = p.add_run(' 这是Arial,12磅,斜体,蓝色')
run.font.name = 'Arial'
run.font.size = Pt(12)
run.font.italic = True
run.font.color.rgb = RGBColor(0, 0, 255)

doc.save('font_example.docx')

2. 混合字体样式(上标、下标、下划线)

from docx import Document
from docx.shared import Pt

doc = Document()
p = doc.add_paragraph()

# 上标示例:X^2
p.add_run('X').font.size = Pt(12)
sup = p.add_run('2')
sup.font.superscript = True
sup.font.size = Pt(8)

p.add_run(' + ')

# 下标示例:HO
p.add_run('H').font.size = Pt(12)
sub = p.add_run('2')
sub.font.subscript = True
sub.font.size = Pt(8)
p.add_run('O')

# 下划线示例
p.add_run(' 这是下划线文本').font.underline = True

doc.save('font_special.docx')

3.批量设置多个 Run 的字体

from docx import Document
from docx.shared import Pt

def set_font(run, font_name, size, bold=False, italic=False):
    run.font.name = font_name
    run.font.size = Pt(size)
    run.font.bold = bold
    run.font.italic = italic
    return run

doc = Document()
p = doc.add_paragraph()

# 批量设置
set_font(p.add_run('标题1'), '黑体', 16, bold=True)
p.add_run('\n')  # 换行
set_font(p.add_run('正文内容...'), '宋体', 12)

doc.save('batch_font.docx')

4. 读取并修改现有文档的字体

from docx import Document
from docx.shared import Pt

doc = Document('existing.docx')

# 遍历所有段落和Run,修改字体
for p in doc.paragraphs:
    for run in p.runs:
        run.font.name = '宋体'
        run.font.size = Pt(12)

doc.save('modified_font.docx')

PS:

段落与 Run 的区别:段落(Paragraph)是文档的基本结构单位,而Run是段落内具有相同格式的文本块。若直接对段落设置字体,会影响整个段落:

p = doc.add_paragraph() p.style.font.name = '宋体' # 整个段落使用宋体

体颜色设置:使用RGBColor时,值范围为 0-255。常见颜色的 RGB值:

颜色名称

RGB 值(Red, Green, Blue)

黑色

(0, 0, 0)

白色

(255, 255, 255)

红色

(255, 0, 0)

绿色

(0, 255, 0)

蓝色

(0, 0, 255)

黄色

(255, 255, 0)

青色

(0, 255, 255)

品红色

(255, 0, 255)

灰色

(128, 128, 128)

橙色

(255, 165, 0)

紫色

(128, 0, 128)

字体大小单位:使用Pt()指定磅值,而非像素(如:Pt(12) 对应Word中的12号字体)。

三、表格与列表操作

1. 创建表格

核心函数

  • add_table(rows, cols):创建表格。
  • cell(row, col).text:设置单元格文本。
Document.add_table(rows, cols, style=None)

参数说明:rows:表格的行数(整数),cols:表格的列数(整数),style:表格样式(可选,如'Table Grid')

返回值:返回一个Table对象,可用于后续操作(如填充数据、设置格式)。

from docx import Document

doc = Document()

# 创建4行4列的表格
table = doc.add_table(rows=4, cols=4, style='Table Grid')

# 填充表头 table.rows[0]表示第1行,table.rows[0].cells表示第1行的列对象
hdr_cells = table.rows[0].cells
hdr_cells[0].text = '姓名'  #填充第1列的内容
hdr_cells[1].text = '年龄'  #填充第2列的内容
hdr_cells[2].text = '性别'  #填充第3列的内容
hdr_cells[3].text = '职业'  #填充第4列的内容

# 填充数据
data = [
    ('张三', 25, '男', '工程师'),
    ('李四', 30, '女', '设计师'),
    ('王五', 28, '男', '产品经理')
]

for row_idx, row_data in enumerate(data, 1):
    row_cells = table.rows[row_idx].cells
    for col_idx, cell_data in enumerate(row_data):
        row_cells[col_idx].text = str(cell_data)

doc.save('simple_table.docx')

程序执行后,打开docx文档,表格如下:

1). 合并单元格

# 合并第1行的前两列
table.cell(0, 0).merge(table.cell(0, 1))
table.cell(0, 0).text = '个人信息'

2). 设置单元格格式

from docx.shared import RGBColor

# 设置字体颜色
cell = table.cell(1, 0)  # 第2行第1列
cell.paragraphs[0].runs[0].font.color.rgb = RGBColor(255, 0, 0)  # 红色文本
cell.paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER         #居中
cell.paragraphs[0].runs[0].font.bold = True                      #加粗
 

3). 添加图片到表格

from docx.shared import Inches

# 在表格中插入图片
cell = table.cell(1, 3)  # 第2行第4列
cell.paragraphs[0].add_run().add_picture('photo.jpg', width=Inches(1.0))

以上几个场景,在主场景中增加后,执行结果如下:

2. 添加列表

核心函数

  • add_paragraph(text, style='List Bullet'):添加无序列表。
  • add_paragraph(text, style='List Number'):添加有序列表。

案例:创建购物清单

from docx import Document

doc = Document()
doc.add_heading('购物清单', level=2)

# 无序列表
doc.add_paragraph('水果', style='List Bullet')   #1级
doc.add_paragraph('苹果', style='List Bullet 2') #2级 
doc.add_paragraph('香蕉', style='List Bullet 2') #2级 

# 有序列表
doc.add_paragraph('步骤', style='List Number')
doc.add_paragraph('选择商品', style='List Number 2')
doc.add_paragraph('结账付款', style='List Number 2')

doc.save('shopping_list.docx')

四、高级操作:插入图片与页面设置

1. 插入图片

核心函数

  • add_picture(image_path, width, height):插入图片并设置尺寸。

案例:创建产品介绍文档

from docx import Document
from docx.shared import Inches

doc = Document()
doc.add_heading('产品介绍', level=1)

# 添加文本说明
doc.add_paragraph('这是我们的最新产品,具有以下特点:')

# 添加图片
doc.add_picture('product.jpg', width=Inches(4), height=Inches(3))

# 添加产品特性列表
features = ['高性能', '低功耗', '易操作', '长寿命']
for feature in features:
    doc.add_paragraph(feature, style='List Bullet')

doc.save('product_intro.docx')

2. 页面设置

核心函数

  • section.page_height:设置页面高度。
  • section.page_width:设置页面宽度。
  • section.orientation:设置页面方向(纵向 / 横向)。

案例:创建横向页面文档

from docx import Document
from docx.enum.section import WD_ORIENT

doc = Document()

# 获取第一个节(默认只有一个节)
section = doc.sections[0]

# 计算横向页面尺寸(交换宽高)
new_width, new_height = section.page_height, section.page_width
section.orientation = WD_ORIENT.LANDSCAPE
section.page_width = new_width
section.page_height = new_height

# 添加内容
doc.add_heading('横向页面示例', level=1)
doc.add_paragraph('这是一个横向页面的文档。')

doc.save('landscape_page.docx')

5、总结

python-docx 库为Word 文档自动化提供了强大支持,无论是简单的文本处理,还是复杂的表格、图片操作,都能轻松应对。通过本文的案例,你可以快速上手并应用到实际工作中,提升办公效率! 其他请参考官方文档:
https://python-docx.readthedocs.io/

相关推荐

百度网站官网入口(百度网站官网入口手机版)

百度是官方网站。             &...

word办公软件(笔记本电脑如何下载word办公软件)

您可以通过以下步骤下载MicrosoftOffice:1. 访问Microsoft官方网站:您可以在浏览器中输入“MicrosoftOffice”或“office.com”来访问...

微pe安装win10系统(微pe2.0装win10详细教程)
  • 微pe安装win10系统(微pe2.0装win10详细教程)
  • 微pe安装win10系统(微pe2.0装win10详细教程)
  • 微pe安装win10系统(微pe2.0装win10详细教程)
  • 微pe安装win10系统(微pe2.0装win10详细教程)
cpu坏了会无限重启吗(cpu坏了会无限重启吗为什么)

是的,这种情况一般多是CPU针脚有损坏,造成内存不能正确识别!现在的内存控制器一般集成在CPU所以容易出现这个问题!之前我在网上淘了一块二手CPU,安装好后无限重启,确定没有安装出错,拿到实体店也没有...

用户账户控制(关闭用户账户控制)

 选择此电脑,单击鼠标右键,点击管理,进入计算机管理界面,点击本地用户和组,点击用户,在右边会出现相应的用户设置窗口,在右边的窗口上选择名为Administrator的用户,右键单击Admi...

怎样取消电脑自动关机设置(电脑取消自动关机在哪里设置)

1、在电脑键盘里找到windows和R这两个键盘,找到之后,同时按住这两个键盘。2、按住了这两个组合键之后就将可以将电脑的命令窗口打开了。3、在命令窗口里面的打开一栏里输入shutdown-a这样的...

万界系统txt下载(万界系统林萧txt)

超级败家子,万界之大佬都是我儿子,类似的有系统的小说主角大多都能穿越万界穿越时空位面玩转次元位面次元位面主系统无限之时空大盗最强掠夺系统位面电梯我的房间有扇任意门大无限神戒《儒道至圣》《佛本是道》《...

腾讯qq密码怎么改(腾讯qq密码修改中心)

因腾讯视频是使用微信或者QQ帐号登录的,没有独立的腾讯视频账号密码,想修改登录密码,请通过QQ或者微信个人中心进行更改即可。QQ密码修改:进入手机QQ->左上角个人头像->设置->帐...

win10安全模式根本进不去(windows10安全模式进不去怎么办)

win10安全模式启动不了的解决教程:1、按下【win】+【R】,打开运行窗口,然后输入【msconfig】。点击确定。2、然后切换到【引导】界面。将【安全引导】和【最小】进行勾选,点击【确定】。3、...

win8激活密钥2025(win8激活密钥永久激活码)

1不存在永久激活密钥,但可以使用一些有效期长的密钥去激活Win10专业版。2Windows10的激活方式是基于数字权利,当你购买Windows10时,系统会将您电脑的硬件信息和购买记录绑定在一起...

windows远程桌面(远程桌面app安卓版)

要在WindowsServer2016上开启远程桌面服务,您可以按照以下步骤操作:1.**打开服务器管理器**:您需要登录到您的WindowsServer2016系统。2.**启用远程桌面...

网盘app下载安装(雀云网盘app下载安装)

因为这时的文件只是下载到云盘里,并没有下载到手机里,而在云盘里是不能执行安装程序的,需要把云盘里的安装包,下载到手机内存里面,才可以执行安装命令。现在相当于,你的快递已经在驿站签收了,随时都可以拿回来...

隐藏文件夹不显示(隐藏文件夹不显示出来)

如果,可能是文件被删除或移动到其他位置。隐藏文件是指在文件系统中设置了隐藏属性的文件,通过更改文件夹的设置可以显示或隐藏这些文件。如果文件夹显示隐藏文件的设置已经开启,但仍然找不到文件,可能是因为文件...

强制修改密码软件下载(强制密码修改器)

1.首先找回账户密码(适用于Android设备):如果您的设备与账户关联,可以访问账户的“找回密码”功能,通过重置密码来修改锁屏密码。2.使用其他登录方式(适用于iOS设备):如果您启用了Touch...

苹果ipad充不进电怎么办(苹果ipad充不进去电什么原因)

如果你发现你的iPad不能充电,那么你这样试一下,你看是不是充电的温度太低,你给他拿到一个比较温暖的房间里去,第2个就是你换一个充电器试一试,是不是那个充电器坏了,如果还不行的话,你可以把iPad重新...

取消回复欢迎 发表评论: