之前写过一篇关于获取excel数据进行迭代的方法,今天补充上写入的方法。由于我用的是Python3,不兼容xlutils,所以无法使用copy excel的方式来写入。这里使用xlwt3创建excel后,将原有的excel数据输入到新建的excel,写入->保存->移除原有excel。

1.首先安装xlwt3,下载链接:https://pypi.python.org/pypi/xlwt3/0.1.2

  1. import os
  2. import xlrd
  3. import xlwt3
  4.  
  5. class ExcelUtil(object):
  6.  
  7. def __init__(self, excelPath, sheetName):
  8. self.path = excelPath
  9. self.name = sheetName
  10.  
  11. self.data = None
  12. self.table = None
  13. self.row = None
  14. self.rowNum = None
  15. self.colNum = None
  16. self.curRowNo =
  17.  
  18. def openExcel(self):
  19. self.data = xlrd.open_workbook(self.path, formatting_info=True)
  20. self.table = self.data.sheet_by_name(self.name)
  21. self.row = self.table.row_values()
  22. self.rowNum = self.table.nrows
  23. self.colNum = self.table.ncols
  24.  
  25. def next(self):
  26. self.openExcel()
  27. r = []
  28. try:
  29. while self.hasNext():
  30. s = {}
  31. col = self.table.row_values(self.curRowNo)
  32. i = self.colNum
  33. for x in range(i):
  34. s[self.row[x]] = col[x]
  35. r.append(s)
  36. self.curRowNo +=
  37. self.curRowNo =
  38. except Exception as ex:
  39. print(ex)
  40. return r
  41.  
  42. def hasNext(self):
  43. if self.rowNum != and self.rowNum > self.curRowNo :
  44. return True
  45. else:
  46. return False
  47.  
  48. def write(self, titleName, value):
  49. self.openExcel()
  50.  
  51. columnNum = self.getColNum(titleName)
  52.  
  53. book = xlwt3.Workbook(encoding='utf-8', style_compression=)
  54. #cell_overwrite_ok=True参数是为了可以修改原来的cell
  55. sheet = book.add_sheet(self.name, cell_overwrite_ok=True)
  56.  
  57. #将原来的excel数据添加到新建的excel中
  58. for x in range(self.rowNum):
  59. row = self.table.row_values(x)
  60. for i in range(self.colNum):
  61. sheet.write(x, i, row[i])
  62.  
  63. #写入当前迭代那一行的excel
  64. if self.hasNext():
  65. sheet.write(self.curRowNo, columnNum, value)
  66. self.curRowNo +=
  67.  
  68. os.remove(self.path)
  69. book.save(self.path)
  70.  
  71. def getColNum(self, titleName):
  72. titleColNum = -
  73.  
  74. try:
  75. for i in range(len(self.row)):
  76. if self.row[i] == titleName:
  77. titleColNum = i
  78. break
  79. else:
  80. continue
  81. except Exception as ex:
  82. print(ex)
  83.  
  84. return titleColNum

3.这里执行xlwt3的write方法时,会提示:ValueError: ‘init’ in slots conflicts with class variable。
打开Python35\Lib\site-packages\xlwt3\formula.py文件,将其中的
slots = [“init“, “__s”, “__parser”, “__sheet_refs”, “__xcall_refs”]
修改为
slots = [ “__s”, “__parser”, “__sheet_refs”, “__xcall_refs”]
这时再执行就OK了!

Python unittest excel数据驱动 写入的更多相关文章

  1. Python unittest excel数据驱动

    安装xlrd 下载地址:https://pypi.python.org/pypi/xlrd 安装ddt 下载地址:https://pypi.python.org/pypi/ddt/1.1.0 clas ...

  2. python Unittest+excel+ddt数据驱动测试

    #!user/bin/env python # coding=utf- # @Author : Dang # @Time : // : # @Email : @qq.com # @File : # @ ...

  3. Python Unittest与数据驱动

    python中有一个装饰器类DDT,通过它我们可以复用代码,达到数据驱动测试的目的,该类的官方介绍可以参考 http://ddt.readthedocs.io/en/latest/index.html ...

  4. python将excel数据写入数据库,或从库中读取出来

    首先介绍一下SQL数据库的一些基本操作: 1创建 2删除 3写入 4更新(修改) 5条件选择 有了以上基本操作,就可以建立并存储一个简单的数据库了. 放出python调用的代码: 此处是调用dos 操 ...

  5. Python向excel中写入数据的方法 方法简单

    最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 p ...

  6. python+unittest+ddt数据驱动进行接口自动化测试

    所谓数据驱动测试,简单的理解为数据的改变从而驱动自动化测试的执行,最终引起测试结果的改变.通过使用数据驱动测试的方法,可以在需要验证多组数据测试场景中,使用外部数据源实现对输入输出与期望值的参数化,避 ...

  7. Python+unittest+excel

    接口测试设计思想: 框架结构如下: 目录如下: readme: config下的run_case_config.ini 文件说明: run_mode: 0:获取所有sheet页 1: if case_ ...

  8. python 对Excel表格的写入

    python对Excel表格写入需要导入xlrd ,和xlutils两个库 from xlrd import open_workbook from xlutils.copy import copy o ...

  9. python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告

    1.环境准备: python3.6 requests xlrd openpyxl HTMLTestRunner_api 2.目前实现的功能: 封装requests请求方法 在excel填写接口请求参数 ...

随机推荐

  1. 【P1274】魔术数字游戏(搜索+剪枝+模拟)

    做完了这个题的我一口老血喷在屏幕上... 这个题难度不高(~~胡扯~~),就是爆搜就可以了,然而..判断条件灰常多,剪枝也就非常多..然而,这些判断条件又不得不必须满足,所以也就十分容易错... 说一 ...

  2. JS,Jquery获取屏幕的宽度和高度

    Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...

  3. java基础(4)-数组(1)

    数组:存储同一种数据类型的多个元素的容器数组初始化: 元素类型[] 数组名 = new 元素类型[数组长度]int [] arr = new int[5] 元素类型[] 数组名 = new 元素类型[ ...

  4. Linux命令之sort用法

    linux之sort用法   sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内 ...

  5. asp.net 基础知识

    1. DropDownList 的赋值 Response.Write(DropDownList1.Items.FindByText("潍坊").Value); Response.W ...

  6. 简单的shell语句

    1,重启tomcat 脚本: pid=`ps -ef|grep tomcat |grep -v grep |awk '{print $2}'` ##取tomcat的进程号,awk处理字符串 ,取一行的 ...

  7. java_报表_00_资源帖

    一.精选资料 二.java api 1.jfreechart (1).Java-jfree报表(学习整理)----饼状图.柱状图.折线统计图 (2).Jfreechart打造专业图表-原来Jfreec ...

  8. UnityGUI扩展实例:图片挖洞效果 Mask的反向实现

    转载自 https://www.taidous.com/forum.php?mod=viewthread&fid=211&tid=55259 我想大家在用uGUI做界面时,可能经常会碰 ...

  9. hihocoder 1049 后序遍历树

    #include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> #inc ...

  10. RedHat5.8 编译内核驱动 合成initrd.img

    /******************************************************************* * RedHat5.8 编译内核驱动 合成initrd.img ...