写在前面

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

模块的安装 pip install python-docx

以下网址首先准备好

  1. 官方手册:python-docx.readthedocs.io/en/latest/i…
  2. pypi 官方地址:pypi.org/project/pyt…

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

创建一个文档

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

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

注意下文中的 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-docx 操作 word docx 文档相关推荐

  1. Python批量提取docx格式Word文档中所有批注

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等配 ...

  2. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  3. python-docx中文开发文档_使用Python语言-docx生成Word文档

    本文主要向大家介绍了使用Python语言-docx生成Word文档,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. < 学会来使用python操作数据表和PDF,今天我们尝试 ...

  4. python生成word目录_使用Python更新MS Word .docx文档的目录(目录)

    我使用python包" python-docx"来修改MS Word .docx文档的结构和内容.该软件包无法更新TOC(目录)[Python: Create a "Ta ...

  5. python处理word文档文字重复_Python-docx 对 word 文本处理实现自动化操作!

    之前介绍了一个Python包 openpyxl ,用于处理 Excel :而对于 Word 文本时同样也有对应的 Python库 Python-docx,在日常办公中,如果需要处理多个 word 文本 ...

  6. python word转pdf linux_Linux下使用LibreOffice+python将doc/docx/wps格式的文档转成html/txt/docx等格式...

    Linux下的word文档格式转换工具 最近接到一个需求,要将所有不同格式的文档(包括.doc/.docx/.wps)转成统一格式,如都转为.docx,或直接转为.html 或.txt.经调研后,发现 ...

  7. python 合并word文件_使用python docx合并word文档

    合并包含所有样式的两个文档的另一种方法是使用python库docxcompose(https://pypi.org/project/docxcompose/).我们不需要明确定义样式,也不必逐段阅读文 ...

  8. python怎么读取word文件_使用python编辑和读取word文档

    python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明. 使用python新建一个word文档,操作就像文档里介绍的那样: 1 from docx importDo ...

  9. python word排版_使用Python通过win32 COM实现Word文档的写入与保存方法

    通过win32 COM接口实现软件的操作本质上来看跟直接操作软件一致,这跟我之前经常用的通过各种扩展的组件或者库实现各种文件的处理有较大的差异.如果有过Windows下使用Word的经历,那么使用wi ...

最新文章

  1. 网站优化靠前排名讲方法
  2. LeetCode-两个结构分别遍历,然后合并
  3. VTK:PolyData之GetMiscCellData
  4. 微软二合一能装python吗_微软再出神器,这次终于对Python下手了!
  5. 久谦咨询python笔试题目_【久谦咨询面试|面试题】-看准网
  6. mysql远程访问 linux_Linux中开启mysql远程访问功能
  7. ie模式下html中的按钮失效,解决ewebeditor编辑器在IE8下按钮失效、点击后没反应的问题...
  8. 敏捷与安全不可兼得吗?看完这篇文章后,我想说:未必!
  9. 如何将unity3d动画嵌入html,在Unity3D中使用精灵动画引擎制作动画的两种方法
  10. 记录CodeForces第一次比赛经历
  11. linux oracle client 安装,linux服务器上 oracle instantclient 客户端的安装和配置
  12. 等压线上怎么画风向_如何利用等压线图判定天气
  13. 怎么批量删除html里的字段,shp文件怎么删除字段
  14. 安信可ESP8266开发环境搭建
  15. Spire.PDF帮你高效搞定PDF打印
  16. Windows:在Windows下创建并删除软连接
  17. 如何在CentOS系统服务器下搭建代理IP
  18. 不一样的feign,获取返回code非200的响应
  19. 每周分享第 38 期
  20. Python初级入门精讲-学习笔记

热门文章

  1. 实现android自动接听来电功能
  2. 2019年1月18日假期日记
  3. Java 基础面试之集合
  4. 面试官问:前后端分离项目,有什么优缺点?我说:没
  5. 硕士期间小论文投稿经历
  6. 这个对PID的讲解也是不错的,和我当初在B站上看到的一个英文视频类似
  7. 终于有人讲透了芯片是什么(设计-晶圆-封测)
  8. AdServices归因和iAd归因集成
  9. NAT技术基础与配置(华为设备)
  10. 运用IPXE技术引导PE系统(CentOS篇)