APP下载

基于Python的Excel文档批量转换生成自定义形式Word文档工具的实现和应用

2021-12-08高炽扬崔宁宁

数字通信世界 2021年11期
关键词:测试用例示意图文档

高炽扬,王 健,崔宁宁

(北京赛迪软件测评工程技术中心有限公司,北京 100000)

1 概述

电子表格文档以数据展示直观、操作使用便捷等特点,多年以来,在各行各业中广泛的使用。Excel文档作为当前主流的电子表格文档,在某些使用场景下,可以作为一个小型的数据库,来存储各种业务的原始基础数据。这些基础数据如果要以书面正式的方式进行展示,通常需要用Word文档以特定的组织形式来完成。本文通过对Excel文档转换生成Word文档的需求进行分析,设计实现了一款基于Python的Excel文档批量转换生成自定义形式Word文档的工具(以下简称“Excel文档转Word文档工具”),并给出了一些该工具的应用场景,以便于提升相关领域文档工作的效率。

2 设计工具的背景

在软件测试领域,进行测试需求分析与策划、测试设计与实现以及测试执行时,使用电子表格软件编制测试项、测试用例,记录测试执行结果,最终形成电子表格文档,目前是一种相对简单、高效的方式。在测试文档的生成过程中,Excel文档和Word文档是最常用的文档,在形成测试相关的Excel文档后,只是完成了基础数据的汇总的第一步,通常书面正式提交测试文档成果时,需要将Excel文档按照相关标准、要求,转为特定形式Word文档,以展示相关的数据信息。如图1所示,例了测试过程中一种Excel文档转换生成Word文档的场景。

图1 Excel文档转换生成Word文档示例图

实现Excel文档转换生成Word文档,通常可以使用Microsoft Word的“邮件合并”功能,通过选取包含基础信息的Excel文档作为数据源,在定义了合并域的Word模板中,完成Excel文档到Word文档的转换生成。“邮件合并”功能对数据字段简单、模板固定的Excel和Word文档转换生成相对容易完成,但是对于数据字段较多,模板经常变更的Excel和Word文档,每次转换生成都需重新选择数据源和定义模板,比较容易出错,并且在Excel文档生成Word文档之后,往往还需要进行大量的人工格式调整、文档整合的工作,难以一次性生成所需要的Word文档,效率不高。

基于Python实现的Excel文档转Word文档工具,无须依赖特定表头的Excel文档,只要按照一定的规则在Word模板文档中引用Excel文档中表头的内容,通过工具即可完成Word文档的批量转换生成功能,解决了由于Excel文档数据字段较多,Word文档模板经常变更等原因,导致的文档转换生成效率低下的问题。

3 工具的实现

Excel文档转Word文档工具基于Python的原生库tkinter、第三方库xlrd和python-docx-template实现。其中,tkinter库用于人机交互界面的制作,xlrd库用于从Excel文档读取数据和格式化的信息。python-docx-template库用于读取使用类Jinja2语法标记过的Word模板文档。工具包括输入模块、文档生成处理模块和输出模块。工具的处理流程,如图2 所示。

图2 Excel文档转Word文档工具处理流程示意图

输入模块需要准备Excel数据文档和Word模板文档。

(1)Excel数据文档中,首行作为表头,其余行作为数据行,表头可以根据需要自行订制。如果Excel数据文档有多个Sheet页,则需要各Sheet页有相同的表头。

(2)Word模板文档中,固定的内容和格式可以根据需要进行自定义,重复的内容和格式可以使用模板标签进行填充,模板标签采用类Jinja2的语法进行定义,包括控制标签和内容标签,控制标签可以进行逻辑和循环的控制,内容标签以变量的形式获取Excel文档中的数据。如:

{%p jinja2_tag%}代表段落的控制标签;

{%tr jinja2_tag%}代表表格行的控制标签;

{%tc jinja2_tag%}代表表格列的控制标签;

{{}}代表变量。

同时,工具定义了固定的标签变量,包括“break”、“sheets”、“tstype”、“tables”和“allcases”等共5种。“break”代表空字符,在Word文档中起到分隔的作用;“sheets”代表一个Excel文档所有sheet页的数据集合,其包含两个主要元素:测试类型(“tstype”)和单个sheet页的行数据集合(“tables”);“allcases”代表一个Excel文档中包含的所有行,并在每行末尾增加测试类型元素的数据集合,是区别于“sheets”的,储存Excel文档中全部数据的另一种形式。“sheets”和“allcases”列表的结构,如图3所示。

文档生成处理模块包括“测试项生成”、“测试用例记录”功能、“报告其他文档”和“正向追踪表”功能。“测试项生成”功能,工具可以根据配置读取Excel文档首例值指定列的数据;“测试用例记录”功能、“报告其他文档”和“正向追踪表”功能,工具会读取Excel文档有数据的全部列;“正向追踪表”功能,可以按照软件需求的顺序,生成软件需求至测试需求的正向追踪关系表。通过选择不同的功能,可以自动切换对应的模板。

输出模块可以按照规则读入的Excel数据,将表格中对应输入填入Word模板中含有内容标签的相应位置,通过逻辑和循环等控制标签的作用,进行批量、重复处理,最终完成Word文档的生成。工具的界面图,如图4所示。

图4 Excel文档转Word文档工具界面图

4 工具的应用

Excel文档转Word文档工具采用单机运行的方式,基于Python实现。由于Python的跨平台特性,工具可以在MacOS、Linux、Windows操作系统上运行使用。Excel文档转Word文档工具通过自定义Excel数据文档和Word模板的方式,不仅可以用于软件测试文档的转生成,还可以用于其他类型工作文档的转换生成。

在软件测试文档生成的工作场景中,如图5所示,为某系统的测试用例Excel文档,该文档包括“文档审查”和“功能测试”两个Sheet页,Sheet页表头和多行数据。

图5 测试场景输入文档之Excel文档示意图

如图6所示,为测试用例的Word模板,在该模板中有固定的、重复的表格内容和段落格式。通过循环控制标签的定义,如“{%p for sheet in sheets%}…{%p endfor%}”、“{%tr for row in sheet.tables%}…{%tr endfor%}”等,可以让相同类型的数据,按照需要的格式进行展示;通过引用Excel文档表头的变量“{{row.用例名称}}”、“{{row.用例描述}}”和“{{row.设计人员}}”等内容标签可以获取Excel文档中对应的数据信息。

图6 测试场景输入文档之Word模板文档示意图

工具对“测试用例Excel文档”和“测试用例Word模板”的处理,最终可以生成所需要的“测试用例Word文档”,如图7所示,生成完成后无需对Word文档的内容和格式进行额外的处理,即可直接打开使用。

图7 测试场景输出文档之Word生成文档示意图

在商务文档生成的工作中,经常会有根据专家名单制作若干专家邀请函的场景。如图8所示;为专家信息Excel文档,该文档有一个Sheet页,并包含表头和多行数据。

图8 商务场景输入文档之Excel文档示意图

如图9所示,为专家邀请函的Word模板,在该模板中有固定的、重复的标题、段落内容和格式。通过循环控制标签的定义,如“{%p for sheet in sheets %}…{%p endfor %}”、“{%p for row in sheet.tables %}…{%p endfor %}”等,可以让相同类型的数据,按照需要的格式进行展示;通过引用Excel文档表头的变量“{{row.专家姓名}}”、“{{row.会议日期}}”和“{{row.通知日期}}”等内容标签可以获取Excel文档中对应的数据信息。

图9 商务场景输入文档之Word模板文档示意图

工具对“专家信息Excel文档”和“专家邀请函Word模板”的处理,最终可以生成所需要的“专家邀请函Word文档”,如图10所示,生成完成后无需对Word文档的内容和格式进行额外的处理。

图10 商务场景输出文档之Word生成文档示意图

在进行其他文档工作时,如测试报告、测试记录的批量生成,多份表格简历转换生成,名片信息的生成,物品标签的生成等Excel文档转Word文档的应用场景,亦可通过Excel文档转Word文档工具来实现。

5 结束语

基于Python实现的Excel文档批量转换生成自定义形式Word文档的工具,将复杂的文档转换工作简化,解决了目前软件测试工作中大量Excel文档转换为Word文档的效率问题,节省了大量测试文档工作时间。该工具通过对Word模板的自定义编制,还可以应用于商务、行政等领域的Excel文档转换生成Word文档工作,亦可提升相关领域文档工作的效率。

猜你喜欢

测试用例示意图文档
浅谈Matlab与Word文档的应用接口
测试用例自动生成技术综述
有人一声不吭向你扔了个文档
回归测试中测试用例优化技术研究与探索
先画示意图再解答问题
基于SmartUnit的安全通信系统单元测试用例自动生成
黔西南州旅游示意图
Word文档 高效分合有高招
Persistence of the reproductive toxicity of chlorpiryphos-ethyl in male Wistar rat
“三定两标”作好图