本篇博客为大家带来 Python 操作 docx 文档相关知识点。
主要涉及的内容为 python-docx ,一款可以操作 Word 文档(仅支持 docx)的第三方库。

文章目录

  • 写在前面
  • 创建一个文档
    • 先实现第一步,写入一个标题
    • 添加文字段落
    • 列表的添加
    • 图片的添加
    • 表格添加
    • 相关样式设置
    • 页眉和页脚
  • 订阅时间

写在前面

python-docx 不支持 doc 文档,一定要注意该点,如果使用 doc 文档,需要提前将其用 Word 相关软件转换为 docx 格式。 docdocx 是存在本质差异的,一个是二进制,另一个 XML 格式的文件。

模块的安装 pip install python-docx

以下网址首先准备好

  1. 官方手册:https://python-docx.readthedocs.io/en/latest/index.html
  2. pypi 官方地址:https://pypi.org/project/python-docx/

资料准备完毕,即可进入编码环节。

创建一个文档

第一个需求,创建一个文档,并在里面写入各种信息。

先实现第一步,写入一个标题

注意下文中的 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

订阅时间

今天是持续写作的第 277 / 365 天。
可以关注我,点赞我、评论我、收藏我啦。

更多精彩

  • Python 爬虫 100 例教程导航帖(连续3年,不断更!)

一篇就够,python 操作 word 文档,使用 python-docx 落地实现,写入篇相关推荐

  1. python操作word文档(python-docx)

    python操作word文档(python-docx) 1. 效果图 1.1 python-docx文档标题段落(等级.加粗.斜体.居中)效果图 1.2 python-docx字体(加粗.斜体.居中. ...

  2. Python 操作Word文档插入图片和表格实例演示

    Python 操作Word文档插入图片和表格实例演示 效果图 实现过程 ① python-docx 库安装 ② word 文档插入图片演示 ③ word 文档插入表格演示 [ 文章推荐 ] Pytho ...

  3. python操作word文档中的图片_Python操作word文档插入图片和表格的实例演示

    前言P6Q免费资源网 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多说了,来一起看看详细的代码P6Q免费资源网 实例代码: ...

  4. php怎么在表格里插图片,Python操作word文档插入图片和表格的实例演示

    今天带来Python操作word文档插入图片和表格的实例演示教程详解 前言 图片是Word的一种特殊内容,这篇文章主要介绍了关于Python操作word文档,向里面插入图片和表格的相关内容,下面话不多 ...

  5. 利用python操作word文档

    总目录:Python数据分析整理 本文代码参考自官方文档: python-docx 使用的库下载方式为:pip install python-docx 注意!! 不是:pip install docx ...

  6. Python 操作Word文档(一)--- 基本读写

    Python 操作Word文档(一)- 基本读写 安装python-docx库 命令安装 pip install python-docx IDE中安装,我使用的是PyCharm,如下 python-d ...

  7. python操作word文档-python操作word

    1.Python写word文档 要操作word文档首先需要安装python-docx库: pip install python-docx 然后导入docx模块,或者从docx模块中导入Document ...

  8. 用 Python 操作 Word 文档

    图片来源于网络 ♚ 作者:贠云龙 Blog: zhihu.com/people/yunlongyun 本文主要讲解python中操作word的思路. 一.Hello,world! 使用win32com ...

  9. python操作word文件_利用PYTHON操作WORD文档

    office 2007 中不能直接打开 VB 编辑器,请按 Alt + F11 打开. import win32com.client # 导入脚本模块 WordApp = win32com.clien ...

最新文章

  1. 1657 棋盘上的距离
  2. mysql 游标循环_mysql for循环遍历 游标用处
  3. GO语言变量和常量、语言控制语句流程
  4. (一)Java工程化--Maven基础
  5. android studio 获取SHA1值 MD5值
  6. 03-27 耗电量测试
  7. stm32的rxcallback再debug界面显示没有编译,uC/OS-III
  8. 如何卸载office201032位_win7卸载office2010的步骤_win7如何完美卸载office2010-win7之家...
  9. HP SD2 DAT160小磁带机故障
  10. 除了 Microsoft Office我们还可以选择哪些软件?
  11. 路由器接口管理 控制端口 辅助端口 物理端口 逻辑端口 局域网
  12. python爬虫实战-如何批量爬取唯品会商品信息>>>
  13. Tp5设置参数全局过滤方法
  14. js笔记--BOM编程
  15. MATLAB(2)--MATLAB矩阵的表示
  16. 平面设计中的字体设计新花样
  17. AndroidStudio百度地图开发之显示地图
  18. 战略制定4大关键要点
  19. 百年孤独--给孤独且还在奋斗的你
  20. 进行数据分析时如何提高留存?

热门文章

  1. 关于oss自签名总是验证通不过的总结
  2. 基于FPGA的FIR滤波器的实现(5)— 并行结构FIR滤波器的FPGA代码实现
  3. MFC过时了吗?初学者远离?QT取代?QT/MFC对比
  4. “中盛粮油案”主角王伟曾向员工非法集资
  5. JS中JSON和字符串的转化
  6. 工程师教你如何快速开发微信公众号小程序
  7. 关于滴滴出行APP的一些思考
  8. 因奸杀事件,滴滴APP在下载排行榜跌至61位,会凉凉吗?
  9. 我的世界宅霸服务器文件在哪里,宅霸我的世界怎么联机?我的世界联机攻略
  10. java计算机毕业设计ssm+vue红联小区果蔬销售网站-水果购物商城