前言

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

前言

全网找了一番,用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线条加粗_python docx 设置word表格边框(颜色/线型/粗细)

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

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

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

  3. python拆分excel 样式不变_python带格式拆分excel表单,copy库完美搞定

    python拆分excel表单,生成单独的excel文件,网上这方面的文章很多.但大多只讲主功能如何实现,让拆分后的表保持和原表单一致的格式,则鲜有人讲.本文通过调用copy库,完美实现带格式拆分表单 ...

  4. python判断回文数_Python练习题---判断回文数

    设n是一个任意自然数,如果n的各位数字反向排序所得的自然数与n相等,则n被称为回文数,从键盘输入一个5位数字 ,请编写程序判断这个数字是不是回文数. 思路:先获取一个字符串,再判断该字符串是否满足是自 ...

  5. python递归判断回文数_Python实现判断回文数算法

    回文数的定义:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例1: 输入:121 输出:True 示例2: 输入:-121 输出:False 解释: 从左向右读, 为 -121 . ...

  6. python编辑word的格式_Python 如何对word文档(.docx)的页眉和页脚进行编辑?

    刚好接了个任务要批量修改一批docx页眉,经过一天面向so编程,以下是代码.因为本人只是业余,代码是能用就好,如有错误请指出. PS1.对齐什么的懒得调了. PS2.不适用于doc格式 #批量修改do ...

  7. python依据模板生成word文档_python自动化生成word文件,word格式套用创造模板

    # coding=gbk from docx import Document # 导入docx模块 from docx.enum.text import WD_PARAGRAPH_ALIGNMENT ...

  8. python爬取文件归类_python爬取各类文档方法归类汇总

    HTML文档是互联网上的主要文档类型,但还存在如TXT.WORD.excel.PDF.csv等多种类型的文档.网络爬虫不仅需要能够抓取HTML中的敏感信息,也需要有抓取其他类型文档的能力.下面简要记录 ...

  9. python删除word表格中的某一行_python docx删除word段落

    使用python-docx编辑一个docx文档时, 对添加的方法使用很多, 但有时候也会用到删除和修改 python-docx中并没有提供delete()方法, github上给出了解决方法: htt ...

  10. python实现自动打卡_python实现腾讯文档自动打卡教程

    ​明明365天都不得不待在家里面,居然还要天天去腾讯文档打卡,烦死人了. 天天都填一样的内容,重复无意义的事情,时间就是金钱,浪费人时间约等于谋财害命呀. 所以参考了网络上的代码,并做了改进,用pyt ...

最新文章

  1. EOS技术及生态系统介绍
  2. winscp开启ftp_如何使用winscp,如何使用winscp连接FTP
  3. MyBatis分页插件PageHelper使用练习
  4. linux oracle目录权限不够,Linux 目录权限不足导致ORA-39070错误 | 信春哥,系统稳,闭眼上线不回滚!...
  5. V1-bug Alpha阶段项目展示
  6. Linux服务器重启后crs_stat -t 命令无法正常使用以及解决思路
  7. 一个USB HUB电路分享
  8. c 程序中的注释相当于空白字符_Python专题 | (三)注释、变量与输出
  9. linux脚本嵌套,linux shell 嵌套expect 与服务器交互脚本
  10. Golang并发读取超大文件
  11. 酷狗音乐linux版_酷狗音乐PC版 9.1新版本初体验
  12. OpenCV-图像处理(07、绘制形状与文字)
  13. oss 私有云访问 获取临时图片地址
  14. 『地铁交换机作用』地铁交换机用哪个国家的
  15. top1-Accuracy,top5-Accuracy举例精析
  16. chm sharp安卓版_CHM Sharp(CHM阅读器)
  17. 手把手教你使用MATLAB中的Classification Learner
  18. mysql 主从服务-主从复制数据一致性校验出现的问题
  19. 枚举.........
  20. AE TypeMonkey

热门文章

  1. 大数据与云计算之间的关系
  2. vi不保存退出的命令
  3. 移动oa咋显示无法连接服务器,移动oa办公系统管理维护技巧:让本地连接不再受限的方法...
  4. Python黑客帝国装逼代码
  5. 短视频直播怎么搭建_直播平台搭建流程
  6. 该怎么压缩ppt大小
  7. 计算长方体和四棱锥的表面积和体积(类的继承)
  8. at android.widget.Toast$TN.handleShow(Toast.java:501)自定义布局异常
  9. 新泽西理工计算机科学硕士,新泽西理工学院计算机科学专业硕士申请需要满足哪些条件?...
  10. 下洗风场分析与喷雾模拟