Python-docx在文档自动化(技术手册、分析报告)中应用

Python-docx在文档自动化(技术手册、分析报告)中应用

题记:本文通过工程项目工作中实际的两个案例,对Python-docx库进行简单的介绍。本文涉及到的方法既不是最优方法,也不够全面,只起到抛砖引玉作用。可以根据工作实际需求和兴趣进一步研究及使用。

1 Python-docx库介绍
Python-docx是用于创建和修改Microsoft Word (.docx) 文档的Python库,也是最常用的操作Word库。官方主页:https://python-docx.readthedocs.io/en/latest/

2 案例一:联锁操作手册的裁剪
2.1 联锁操作手册编制的现状

根据联锁项目的不同,操作机软件MMI的功能也有差异,面向用户的操作手册也应该有针对性的进行修改。项目人员需要根据项目实际情况,人工对操作手册的模板文件《计算机联锁系统MMI操作手册》进行裁剪和修改。
通过docx库,根据需求对操作手册的模板文件进行自动的裁剪将会大大提升项目操作手册的编制效率(该方法同样适用于维护手册等同类型手册)。针对《计算机联锁系统MMI操作手册》这个模板文件的特点,需要进行如下几方面的修改。
2.2 文档格式的修改
docx库仅能针对.docx格式的文档进行编辑,所以如果你的文档格式是doc,有两种选择:
(1)直接将原始文件另存为docx格式,以后都保持这个格式,则后续不需要另行处理。
(2)采用pywin32库的相关方法对文档格式进行转换(同样适用于EXECL版本的转换)。
2.3 段落的删除和修改
2.3.1 几个基本概念

首先简单介绍一下docx库中关于Word文档中的几个概念(网上盗个图): 在这里插入图片描述

  1. Document: 是一个Word文档对象,打开不同的Word文档,就会有不同的Document对象。可以同时在不同文档之间进行操作。注意,Document中没有页面的概念。
  2. Paragraph: 是段落,一个Word文档由多个段落组成。段落之间通过回车键分隔,shift+回车不分隔段落。
  3. Run: 表示一个节段,每个段落由多个节段组成。一个段落中相问样式的连续文本,组成一个节段,所以一个段落可能存在多个节段。

2.3.2 段落内容的修改
整篇文档中需要修改内容的地方很多,如果整段内容修改,可以使用paragraph.text的方式(paragraph代表段落对象),但该方法无法保持原来的段落格式。所以一般是使用run.text的方式(run代表段落对象中的节段对象)可以保持既有的段落格式的一致性。
2.3.3 段落的删除
段落删除采用如下方式更加快捷:
paragraph._element.getparent().remove(paragraph._element)
节段、表格的删除都可以使用如下方法。
2.3.4 备注信息的删除
操作手册模板里面有很多备注的提示信息,用于提示项目人员对文档进行裁剪(如下图中的粉色内容)。 在这里插入图片描述

这部分内容无论是以段落形式存在还是添加在段落内部,都需要采用颜色或关键字等方式进行特殊的标注(方便检测),可以通过2.3.3中方法对满足条件的内容进行删除。
2.3.5 新内容的插入
联锁项目中不同的车站都有些非通用内容,比如每个站的报警信息都有所差别,需要在文档中修改。文档中既有的报警内容如下图,需要删除(或修改)原来的报警内容然后插入新的内容。
在这里插入图片描述

这些报警信息,以单独的配置文件的形式存在,所以可以通过读取该配置文件后插入到对应的位置即可。在插入的时候,需要保持与前面段落相同的样式,则需要通过paragraph.style方法获取上一个段落的样式,然后通过add_paragraph方法或者insert_paragraph_before方法插入新的段落(段落样式使用之前获取的段落样式)。当然段落样式也可以使用文档中已经定义过的样式名称。
2.3.6 段落格式
段落中的字体、字号、颜色、段落样式、缩进等设置可以参考相关文档。
2.3.7 裁剪内容的标注
操作手册模板中是大而全的、所有MMI软件功能都包括的文档,当对部分内容进行裁剪的时候,需要制定一定的规则,具体规则可以根据模板文档的特点制定。这里选择的是设置标签,比如在每一个功能的描述文字范围内设置起止标签,用于对该段内容的标注。标签的设置也适用于图片的删除和修改。
2.4 图片的删除和修改
操作手册中需要插入与项目车站所用MMI软件一致的站场图片,还需替换其他的非通用的软件界面图片。虽然docx库无法读取文档中的图片内容(可以通过其他方法获取),但是可以通过自定义的标志位获取图片所在位置,删除之前存在的段落,然后采用add_picture的方法插入新的图片(图片插入前需要自动的完成图片尺寸的缩放)。
2.5 表格的删除和修改
操作手册中的表格数量有限,比如拟制审核表格、修订页表格、缩略语表格,可以针对性的对每个表格进行修改和删除。
表格的删除与2.3.3中段落删除方法一致。由于表格对象内包含paragraph对象,表格内容的修改与2.3.2中段落内容的修改方式一致。
2.6 页眉页脚的删除和修改
Document对象中有节(sections)的概念,也就是在文档插入分节符后对文档的分隔。页眉页脚的修改是在sections中进行。
操作手册中只有一个分节符将文档分为两部分,只有第二节存在页眉页脚,需要将页眉中的文档编号进行删除,对页脚中的版本信息进行删除。这两部分的修改也就是段落的删除和表格的删除步骤。
在这里插入图片描述

2.7 目录的自动更新
文档裁剪后需要对目录进行更新,docx库无法实现目录的自动更新,所以需要用到2.2中提到的pywin32库进行自动更新。
2.8 GUI界面
联锁操作手册的裁剪需要较多的用户输入,所以选择GUI的方式可以让操作更加的简洁,GUI界面如下图所示。
在这里插入图片描述

3 案例二:报告的自动生成
在工作中,如果需要周期性的编制报告或者有一定规律的生成报告,比如联锁每月对发生的故障进行统计分析并形成报告、比如故障记录分析后形成分析报告,docx会帮你提高效率。
使用docx官网上的图片给出docx可以生成的文档样例:
在这里插入图片描述

  • 通过add_heading增加不同等级的标题
  • 通过add_paragraph增加段落,设置段落样式
  • 通过p.add_run增加段落内文字的字体、字号、颜色、斜体等格式
  • 通过add_picture插入图片
  • 通过add_table插入表格
  • 通过add_section分节,add_page_break分页

以联锁记录分析报告为例,截图如下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值