python办公自动化之批量修改docx——以修改含有表格的word文件为例

本文介绍了如何使用python-docx库批量修改含有表格的Word文档。通过熟悉docx API,结合dir()和help()指令,可以快速掌握自动化操作Word的基础。示例代码展示了修改段落和表格内容的方法。
摘要由CSDN通过智能技术生成


系列文章

第一章 python办公自动化之批量修改docx——以修改含有表格的word文件为例
第二章 python办公自动化之批量生成docx——根据excel (word)生成word (excel)
第三章 python办公自动化之python-docx,openpyxl——根据excel(word表格)填写word表格(excel)

前言

收集了下办公自动化的资料,在word处理上没有发现满意的文章,于是自己写一篇吧。


所用素材全部来自于网络,皆为免费资源,下面案例可供参考

一、docx类的包很多,但docx一个就够用

python处理word的包不只docx,PyPI中此类的包不下十计,当然星星最多的还是docx,其他的还有docxtpl、pydocx。只是批量化处理word文档,而不搞花里胡哨的格式,docx足够用了。如果真是为了花里胡哨的格式,那一定是特异性的需求大于标准化的需求,老老实实用word就可以了。

二、快速熟悉docx

介绍word自动化处理的文章十有八九拿来docx官网上的例子,翻译一下就当自己的原创内容了。当然,大部分情况是即使看了这些也无法拿来提升工作效率。
官网教程做的通俗易懂、简明扼要,但是实际上并没有给出批量修改的实例,理由这里复述一下:(1)要想用本API做复杂的事情,得花时间通读帮助文档;(2) 作者(们)认为或者调查之后认为新建空白文档并操作这种基本应用占实际应用情况的80%,所以他们的example就讲的这基本操作。
在这里插入图片描述
笔者实践之后发现,采取以下两个步骤,基本上一晚不用就足够掌握这个API,从而批量修改docx。

  1. 官网溜一遍,内容并不多,熟悉个大概之后,至少知道存在几个object,有哪几个常用的attribute,这样再去翻找的时候方便。
  2. 实际敲代码时候多用dir()、help()指令,如果是help做的一塌糊涂的jupyter,那就只有import之后再help了。

三、代码

word文件需要转为docx才能用python-docx操作,剩下的文档包括代码已经打包到了CSDN的下载链接
Block-level和 Inline text objects的概念:每一段(paragraph)、每个表格(table)都是 Block-level objects, 段落paragraph中的run,以及表格table中的cell可以理解为Inline text,是可以操作的最小单位。也是自动化操作实现的根基。
在这里插入图片描述

1. python-docx修改段落中的内容

代码如下(示例):

#docx的安装就不再赘述了,docx官网可见。
from docx import Document
import re

document = Document("建设工程勘察合同.docx")
print(document)
#官网: https://python-docx.readthedocs.io/en/latest/index.html
#官网着重介绍了从空白开始写一份docx文档,对于修改已有文档介绍甚少,好
#在结合help命令已经足够,无需看源码
#dir(document)
#help(document)
#help(document.paragraphs[0])
#help(document.paragraphs[0].runs[0])
#help(document.tables[0].rows)
#help(document.tables[0].cell(0,0))


#翻译算不上原创,就不翻译了
#如果直接修改paragraphs[...].text,段落格式、行内格式皆丢失,需重新设置格式。
#用runs属性修改,能够最大限度保留行内格式,省去再设置段落格式、行内格式的麻烦
#空格、tab符,被视为区分各个run的标志,shift+_可识别为一个run
def find_index_
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值