文章目录

  • 背景
    • EXCEL的用例
    • Word内容
  • Python处理
    • 读取excel的内容
    • 将同模块的用例保存到同一个对象
    • 采用DocxTemplate根据模板生成word文件
  • 生成结果如下
  • 全部代码如下

背景

目前测试用例使用excel整理后,后期需要变成word文件。采用手工粘贴赋值整理费时费力,随采用python程序处理,从工具人解放出来。

EXCEL的用例

excel的用例如下,一般会有很多模块,且至少包含所属模块,用例标题,前置条件,步骤,预期结果等内容 。

Word内容

需要生成Word的内容如下,就是将excel的内容填充到以下。

Python处理

1.使用pandas读取excel中列的内容
2.将同模块的用例保存到同一个对象(用来生成一个word文件)
3.采用DocxTemplate根据模板生成word文件

读取excel的内容

def creatData(file):""":param file: 需要生成数据的excle文件:return: 序列号数据"""df = pd.read_excel(file)test_data = []for i in df.index.values: # 根据i来获取每一行指定的数据 并利用to_dict转成字典row_data = df.loc[i, excelCol].to_dict()test_data.append(row_data)return test_data

将同模块的用例保存到同一个对象

excelCol = ['所属模块', '用例标题', '步骤', '预期', '前置条件']# 获取excel中列的去重内容
data_moudle = pd.read_excel(excelFile)
moudle = pd.DataFrame(data_moudle['所属模块']).drop_duplicates(subset=None, keep='first', inplace=False).to_dict('list')["所属模块"]
allData = []
# 声明拼接的数组,用来生成文件内容
for i in moudle:item = {"SSMK": i, "table": []}allData.append(item)for name in test_data:for index, key in enumerate(moudle):if name[excelCol[0]] == key:allData[index]["table"].append({"YLBT": zhaunyi(name[excelCol[1]]), "BZ": zhaunyi(name[excelCol[2]]), "YQ": zhaunyi(name[excelCol[3]]),"QZTJ": zhaunyi(name[excelCol[4]])})

采用DocxTemplate根据模板生成word文件

模板文件tem.docx如下

def createDoc(contexts):""":param contexts: 生成文件的内容:return: 生成文件"""for index, context in enumerate(contexts):doc = DocxTemplate("template/tem.docx")# 执行替换doc.render(context)# #保存新的文档doc.save("./case/%s.docx" % (str(index) ))

生成结果如下

会根据excel中的模块生成对应的docx文件,此文章有三个模块,则会生成三个文件。

全部代码如下

# -*- coding:utf-8 -*-
import pandas  as pd
from docxtpl import DocxTemplate
import os
import shutil# 声明需要生成的所属模块
# 读取excel的文件包括路径和名称以及后缀名称
excelFile = 'excelCase/test.xlsx'
# 读取excel中的列,顺序不能变,列名称要跟excel的名称对应
excelCol = ['所属模块', '用例标题', '步骤', '预期', '前置条件']# 获取excel中列的去重内容
data_moudle = pd.read_excel(excelFile)
moudle = pd.DataFrame(data_moudle['所属模块']).drop_duplicates(subset=None, keep='first', inplace=False).to_dict('list')["所属模块"]print(moudle)def zhaunyi(str):# 由于excel中某些单元格为空,因此处理为无# AttributeError: 'float' object has no attribute 'replace'if (type(str) == float):return '无';""":param str: 需要转义的内容:return: 将特殊字符转义"""return str.replace("&", "&amp;").replace("<", "&lt;").replace(">", "&gt;")def createDoc(contexts):""":param contexts: 生成文件的内容:return: 生成文件"""for index, context in enumerate(contexts):doc = DocxTemplate("template/tem.docx")# 执行替换print(context)print(index)doc.render(context)# #保存新的文档# doc.save("./case/%s.docx" % (str(index) + "-" + str(context.get("SSMK")).replace("/", "-")))doc.save("./case/%s.docx" % (str(index) ))def cleanDoc(file):""":param file: 传入需要清空的文件目录:return: 从新生成文件目录"""if os.path.exists(file):# 删除case目录shutil.rmtree(file)#  创建目录os.mkdir(file)allData = []# 声明拼接的数组,用来生成文件内容
for i in moudle:item = {"SSMK": i, "table": []}allData.append(item)def creatData(file):""":param file: 需要生成数据的excle文件:return: 序列号数据"""df = pd.read_excel(file)test_data = []for i in df.index.values:  # 根据i来获取每一行指定的数据 并利用to_dict转成字典row_data = df.loc[i, excelCol].to_dict()test_data.append(row_data)return test_datatest_data = creatData(excelFile)for name in test_data:for index, key in enumerate(moudle):if name[excelCol[0]] == key:allData[index]["table"].append({"YLBT": zhaunyi(name[excelCol[1]]), "BZ": zhaunyi(name[excelCol[2]]), "YQ": zhaunyi(name[excelCol[3]]),"QZTJ": zhaunyi(name[excelCol[4]])})cleanDoc("./case")createDoc(allData)

利用Python根据模板生成Word文档相关推荐

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

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

  2. 使用word模板生成word文档的各类方案

    使用word模板生成word文档的各类方案 生成word的各种方案 word另存xml进行后续处理 2003版本word(.doc)的xml处理并生成word 2007版本word(.docx)的xm ...

  3. Excel转Word,Excel导出Word,利用Excel表批量生成Word文档,邮件合并进阶版

    单击播放视频教材 利用Excel数据批量生成Word文档升级版,Excel转W 01需求概述 假设有图1所示的数据,需要批量生成WORD成绩通知单,通知单必须遵循图2的样式. (案例中的姓名.学校名称 ...

  4. 根据标准word模板生成word文档类库(开源)

    前言   最近因项目需要要自定义标准word模板,并以编码方式操作word模板.填充数据和生成word文档,于是自己写了条小"内裤"来实现这个功能.该"内裤"只 ...

  5. JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...

    Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...

  6. freemarker根据模板生成word文档,换行

    freemarker根据模板生成word文档,其它地方已经说的非常清除了,在此简单再说以下. 1.制作word模板,另存为xml文件.在此我另存为的时windows xml,它和windows 200 ...

  7. Android 使用模板生成Word文档,支持手机直接查看word

    最近在项目工作中,碰到一个很棘手的需求,说是要在手机端根据模板生成word文档,而且不借助第三方的软件可以查看word文档,一开始听这个需求差不多蒙了,这要怎么做,为什么不把生成word文档这个工作放 ...

  8. python 自动生成word文档,python实现的生成word文档功能示例

    python实现的生成word文档功能示例 发布时间:2020-09-23 11:37:44 来源:脚本之家 阅读:108 作者:zhizunyu2009 本文实例讲述了python实现的生成word ...

  9. PHP 使用word模板生成word文档示例

    <?php namespace Home\Controller; use PhpOffice\PhpWord\TemplateProcessor; use Think\Controller; c ...

最新文章

  1. 解决静态方法调用注入的service
  2. Linux中添加、修改、删除用户和用户组
  3. 收回扣、打麻将、开赌场?比亚迪自曝多名员工贪污腐败
  4. 第 26 章 职责链模式
  5. 深入浅出Python——Python高级语法之函数
  6. 步进式解读Apache许可证
  7. 电脑Win7系统桌面图标太大怎么调小
  8. 使用UUID生成32位ID
  9. 二建《机电》案例 100 问
  10. 关于数据分析的一些实例报告
  11. Winform开发框架之Office Ribbon界面
  12. elasticsearch使用脚本 滚动关闭索引,更新index setting
  13. Notification消息提醒
  14. 初学者入门:认识STM32单片机
  15. 第6-1课:A* 算法
  16. (小记)matlab导出模糊控制器中的surface viewer和隶属度曲线
  17. 以太坊联盟链-多节点私链搭建手册
  18. stm32的timer-trgo + DMA + DAC 播放WAV格式音乐
  19. python存储文件_Python的文件读写与存储
  20. 人工智能与医疗领域的融合发展

热门文章

  1. app性能数据导出生成图表方法之一
  2. Android开发——新建库、删除库
  3. MPAndroidchart自定义样式二在柱状图上显示文本和间断式显示柱状图
  4. 相似度论文系列-1:入门方法Towards a Unified Multi-Dimensional Evaluator for Text Generation
  5. 2022年个人总结 - 黑云压城城欲摧
  6. 2345浏览器如何启用过滤弹窗广告
  7. 奔骝定位摄影作品之LAS200
  8. FreeRTOS -- 简介
  9. 时势下的HMS和GMS的前世今生——前生篇
  10. 头条案例登录注册功能