前言

更多内容,请访问我的 个人博客。

前言

全网找了一番,用python创建和更新word(.docx)文档,还是 python-docx 包比较好用。

依赖Python 2.6, 2.7, 3.3, or 3.4

lxml >= 2.3.2

安装模块由于 python-docx 已经提交给 PyPI 仓库,所以可以使用 pip 安装,如下: pip install python-docx

如果同时安装了 python2 和 python3 那么 pip 可能不能用,可以使用 pip3 来安装,如下: pip3 install python-docx

python-docx 也可以使用 easy_install 来安装,如下:easy_install python-docx

如果不能使用 pip 和 easy_install ,可以在 PyPI 下载包、解压、运行 setup.py ,如下: tar xvzf python-docx-{version}.tar.gz cd python-docx-{version} python setup.py install python-docx 还依赖 lxml 包 ,使用前2种方法会自动安装所需依赖包,第三种方法需要自己手动安装。

处理word文档

新建文档类

首先新建一个空白文档类 Document ,如下:

from docx import Document

document = Document()

编辑已存在的word文档

python-docx 不仅可以创建word文档,还可以编辑已存在的word文档。

其实吧,这玩意儿只能编辑已存在的word文档,之所以有个“创建空白文档”的功能,只不过是拷贝一份空白word文档到工作区间,再在空白文档上编辑,看起来似乎是“创建空白文档”罢了。本质上还是编辑已存在的word文档,捂脸中...

打开一个word文档,编辑完后,一定要记得保存。如果保存文件名和原文件名不一样,则会另存为一份word文档;若文件名一样,则会不加提示的保存修改内容。如下:

from docx import Document

document = Document('existing-document-file.docx')

document.save('new-file-name.docx')

新增段落

在word中 段落 是最常见的,创建段落 paragraph 的操作如下:

paragraph = document.add_paragraph('这是个段落。')

在此段落之前插入一个段落,如下:

prior_paragraph = paragraph.insert_paragraph_before('这是前面的段落。')

新增标题

新增标题代码如下:

document.add_heading('这是个标题')

修改标题大小,有1-9种规格,如下:

document.add_heading('The role of dolphins', level=2)

如果使用 level=0 ,则会新增一个带有下划线样式的标题。

新增分页符

代码如下:

document.add_page_break()

新增表格

创建一个2行2列的表格 Table,如下:

table = document.add_table(rows=2, cols=2)

获取第一行第二列的单元格类,如下:

cell = table.cell(0, 1)

写入数据,如下:

cell.text = '这是第一行第二列的单元格'

不仅如此,还能以数组的形式获取整个行或列,如下:

row = table.rows[1]

row.cells[0].text = '第二行第一列'

row.cells[1].text = '第二行第二列'

或循环操作,如下:

for row in table.rows:

for cell in row.cells:

print(cell.text)

用 len() 方法获取行数或列数,如下:

row_count = len(table.rows)

col_count = len(table.columns)

增加行,如下:

row = table.add_row()

设置表格样式,如下:

table.style = 'LightShading-Accent1'

插入图片

插入本地图片,如下:

document.add_picture('demo.png')

默认情况下,图片大小往往不尽如人意,调整图片大小,如下:

from docx.shared import Inches

document.add_picture('demo.png', width=Inches(1.0), height=Inches(1.0))

若同时定义宽度和高度,则图片会被拉伸或压缩到指定大小;若仅定义宽度或高度,则图会自适应调整大小。所以,建议仅定义宽度即可。

段落操作

设置段落样式

设置段落样式,如下:

document.add_paragraph('这是一个样式为 ListBullet 的段落', style='ListBullet')

paragraph = document.add_paragraph('这是一个样式为 ListBullet 的段落')

paragraph.style = 'List Bullet'

设置段落对齐方式

段落对齐方式有 左对齐 、 文字居中 、 右对齐 、 文本两端对齐等,更多对齐方式请移步 WD_ALIGN_PARAGRAPH

from docx.enum.text import WD_ALIGN_PARAGRAPH

# LEFT => 左对齐

# CENTER => 文字居中

# RIGHT => 右对齐

# JUSTIFY => 文本两端对齐

paragraph = document.add_paragraph("你说啥")

paragraph_format = paragraph.paragraph_format

paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER

设置段落缩进

设置段落缩进,可为负值,如下:

from docx.shared import Inches

paragraph = document.add_paragraph("你说啥")

paragraph_format = paragraph.paragraph_format

paragraph_format.left_indent = Inches(0.5)

也可以设置首行缩进,如下:

paragraph_format.first_line_indent = Inches(-0.25)

设置段落制表符

设置段落间距

分为 段前 和 段后 ,设置值用 Pt 单位是 磅 ,如下:

paragraph_format.space_before = Pt(18)

paragraph_format.space_after = Pt(12)

设置段落行距

当行距为 最小值 和 固定值 时,设置值单位为 磅 ,需要用 Pt ;当行距为 多倍行距 时,设置值为数值,如下:

from docx.shared import Length

#SINGLE => 单倍行距(默认)

#ONE_POINT_FIVE => 1.5倍行距

#DOUBLE2 => 倍行距

#AT_LEAST => 最小值

#EXACTLY => 固定值

#MULTIPLE => 多倍行距

paragraph.line_spacing_rule = WD_LINE_SPACING.EXACTLY #固定值

paragraph_format.line_spacing = Pt(18) # 固定值18磅

paragraph.line_spacing_rule = WD_LINE_SPACING.MULTIPLE #多倍行距

paragraph_format.line_spacing = 1.75 # 1.75倍行间距

设置段落分页孤行控制

防止在页面顶端单独打印段落末行或在页面底端单独打印段落首行。

与下段同页

防止在选中段落与后面一段间插入分页符。

段中不分页

防止在段落中出现分页符。

段前分页

在选中段落前插入分页符。

#widow_control => 孤行控制

#keep_with_next => 与下段同页

#page_break_before => 段前分页

#keep_together => 段中不分页

paragraph_format.keep_with_next = True

字体操作

设置粗体和斜体

在设置粗体和斜体之前,我们先简单了解一下 段落 里的运行机制。段落包含很多块级的格式,比如缩进、行高、制表符等。每一个小片段叫做一个 run ,可以对 run 设置粗体和斜体等属性。

我们可以设置如下:

paragraph = document.add_paragraph()

paragraph.add_run('这是一个带有')

paragraph.add_run('粗体').bold = True

paragraph.add_run('和')

paragraph.add_run('斜体').italic = True

paragraph.add_run('的段落。')

设置字体属性

对 run 设置字体、大小、颜色下划线等,更多属性请移步 Font ,如下:

from docx.shared import RGBColor,Pt

#all_caps => 全部大写字母

#bold => 加粗

#color => 字体颜色

#complex_script => 是否为“复杂代码”

#cs_bold => “复杂代码”加粗

#cs_italic => “复杂代码”斜体

#double_strike => 双删除线

#emboss => 文本以凸出页面的方式出现

#hidden => 隐藏

#imprint => 印记

#italic => 斜体

#name => 字体

#no_proof => 不验证语法错误

#outline => 显示字符的轮廓

#shadow => 阴影

#small_caps => 小型大写字母

#snap_to_grid => 定义文档网格时对齐网络

#strike => 删除线

#subscript => 下标

#superscript => 上标

#underline => 下划线

paragraph = document.add_paragraph()

paragraph.add_run('这是一个带有')

paragraph.add_run('颜色').font.color.rgb = RGBColor(54, 95, 145)

paragraph.add_run('的')

paragraph.add_run('大字').font.size = Pt(36) # 字体大小设置,和word里面的字号相对应

设置字符样式

除了设置段落样式外,还可以设置一组字符样式,比如字体、大小、颜色、粗体、斜体等,如下:

# 自定义样式 Emphasis

paragraph = document.add_paragraph('这是一个带有')

paragraph.add_run('自定义样式', 'Emphasis')

paragraph.add_run('的段落')

paragraph = document.add_paragraph('这是一个带有 ')

run = paragraph.add_run('自定义样式')

run.style = 'Emphasis'

paragraph.add_run('的段落')

页眉和页脚

枚举的文档

名称解释

更多编程教学请关注公众号:潘高陪你学编程

python word 表格 缩进_python-docx处理word文档相关推荐

  1. python word 表格 缩进_python win32com 处理word 里面表格的简单方法

    在处理word里面表格的时候,发现和网上的方法不太一样,也不知道是不是python版本的问题 使用win32com处理Word里面的表格时,表格的表示方法为Tables(1),括号里面的数字表示wor ...

  2. python线条加粗_python docx 设置word表格边框(颜色/线型/粗细)

    曾经在网上苦苦寻找过python docx对word表格边框的设置,一直没有,现在终于有了,包括边框颜色.线型.宽度粗细的设置,直接用这个函数set_cell_border就行了(附加office的参 ...

  3. python 写入excel 日期_Python实例:excel文档写入操作

    来自PythonABC.org老师的课程很好,但是每个视频都蛮长的,听着听着就有些晕乎,所以根据视频自己整理了一下,以便记录 学习使用Python实现excel的文档写操作 import openpy ...

  4. python docx 合并文档 图片_Python+pymupdf处理PDF文档案例6则

    推荐图书:<Python程序设计(第3版)>,(ISBN:978-7-302-55083-9),清华大学出版社,2020年6月第1次印刷,7月第2次印刷 京东购买链接:https://it ...

  5. java读取word文档的复杂表格_poi读取word表格 java POI 如何读取word的表格中的表格...

    poi 操作word 2007 (如何删除word中的某一个表格)小编忘了哪年哪月的哪日小编在哪面墙上刻下张脸张微笑着忧伤着凝望小编的脸. public static void changeTable ...

  6. word表格转换成html,delphi将word表格转换成html_取得Word 表格中的数据

    delphi将word表格转换成html_取得Word 表格中的数据 1.delphi将word表格转换成html procedure TForm1.Button1Click(Sender: TObj ...

  7. 计算机word表格线设置在哪里,word表格文字显示不全_word表格怎么设置显示最后一行线?_word表格怎么加一行...

    word表格中经常会碰到最后一行表格的下面的线显示不出,而如果转换成PDF则可以看到线.在网上搜索也没有正确的调整方法,后来经过多次调整表格,终于找到了一个比较好的解决方法. 1.如图1所示情况:首先 ...

  8. java 操作 word 表格和样式_java 处理word文档 (含图片,表格内容)

    因为本人长期从事Oa相关项目的开发,所以处理word文档,Pdf,Excel等是在所难免的. 1.需求      处理Excel 能够用jxl        或者poi 2需求     用户在系统上填 ...

  9. 比Word更优雅的记笔记/写文档/交报告方式

    比Word更优雅的记笔记/写文档/交报告方式 markdown+vscode->pdf 背景 最近在上的一门<信息系统开发工具>课老师要求实验以后都要交实验报告,但是和以往不同的是, ...

  10. 微信公众号怎么添加Word、Excel、PPT、PDF文档下载链接?

    因为公司业务的增长,公司着急需要招聘几个新人到新开的业务线,火线上岗.考虑到公司公众号运营多年,有一定的用户基础,所以HR小姐姐在征求了老板的意见后,决定在公众号发表一篇招聘文.在征求了几个部门的用人 ...

最新文章

  1. 想让关系更好就不要怕麻烦
  2. 数据结构实验之二叉树五:层序遍历(STL和模拟队列两种方法)
  3. C++ Primer 5th笔记(5)chapter5 语句
  4. 树和森林转二叉树,二叉树无右孩子(或右指针域为空)的结点个数计算思路
  5. SpringMVC运行流程分析
  6. gulp加速hexo的yelee主题
  7. iOS LeftMenu抽屉效果与ScrollView共存时的手势冲突
  8. Reporting Services Catalog Database File Existence error during installing SQL Server 2008 R2
  9. QQ文件中转站 发送给好友的功能 哪去了?
  10. 守望先锋--颜色参数
  11. 年仅 28 岁就宣布从字节跳动退休?
  12. Excel如何制作下拉列表
  13. zapya_快牙(com.dewmobile.kuaiya) - 5.9.7 (CN) - 应用 - 酷安网
  14. 烤鱼界头牌半天妖发文致歉,背后暴露了哪些问题?
  15. 万维网Web自动搜索引擎(技术报告)
  16. opengl绘制金字塔
  17. Promise在各种场景的使用(Promise.all、Promise.allSettled、Promise.race、Promise.any)
  18. Win 32API速查
  19. mysql报错 Your password does not satisfy the current policy requirements
  20. 「DaoCloud 道客」荣升Istio指导委员会席位

热门文章

  1. java快速开发平台 二次开发 外包项目利器 springmvc SS-M后台框架源码 (转载)
  2. php数据太大运行时间长超时导致500Internal Server Error错误怎么解决?
  3. virtualenv简介
  4. python之获取token
  5. Oracle数据库中创建表空间、用户、授权
  6. 一个简单的css网页换色例子(盒子模型)
  7. Win10 1903 运行安卓模拟器蓝屏解决方案
  8. 三星s8是否支持html,Galaxy S8/S8+,是否可以承载三星的野望?(中)
  9. ffmpeg api解码音频,得到pcm数据
  10. 【职场必备知识】一文带你了解清楚职场中常用的个税知识