文档章节

Python对excel写入数据操作实例代码(改进无法合并最后一组数据的问题)

henni_719
 henni_719
发布于 2017/04/22 17:10
字数 707
阅读 4
收藏 0
#coding=utf8
'''
把buffer中的信息,写入到excel中。
并按照要求,构造表格样式
'''
#导入readCSV模块,用来获取buffer数据
from readCSV import readCSV
from readConfig import Config
#导入写excel的操作库
import xlwt
class GenTestCase(object):
    def __init__(self,configObj=Config()):
        try:
            
            #创建一个readCSV对象
            self.dataInfor=readCSV(configObj)
            #创建工作薄
            self.wkbook=xlwt.Workbook()
            #创建表:“requirement”
            self.dataSheet=self.wkbook.add_sheet("requirement")
            #把数据按 按照相应格式写入excel表中
            self.writeDataToExcel()
            #保存文件
            self.savaExcel()
        except Exception,e:
            print "GenTestCase init error:",e
        
    def writeDataToExcel(self):
        try:
            #埋点测试用例包含的相关属性,即表头
            firstLine=[u"埋点事件",u"页面",u"serviceId",u"属性名", u"属性值",u"属性信息",u"埋点规则",u"版本",u"IOS开发",u"安卓开发",u"创建时间",u"测试人员",u"测试状态"]
            #在末尾添加长度和firstLine长度相同的list表
            #该list作用是为了能比较到最后一个事件的数据
            endLine=[] 
            #在表的起始行写入表头数据
            try:
                for index in range(len(firstLine)):
                    self.dataSheet.write(0,index,firstLine[index])
                    endLine.append("")
            except Exception,e:
                print "Creat Head Error:",e
                
            #把csv中读取的数据赋给变量dataBody  
            dataBody=self.dataInfor.buffer
            dataBody.append(endLine)   
            #设置个函数,用来记录要合并的起始行
            currentrow=1
            #对数据进行循环取值,由于第一行的数据不是需要的数据
            #所以从第二个元素开始
            try:
                for rowNum in  range(1,len(dataBody)):
                    #对于每个子list中的值,依次写入相关单元格
                    for index in range(len(dataBody[rowNum])):
                        #判断行是否大于1,为以下比较创建条件
                        if rowNum>1:
                            #把数据的当前行的元素与上一行元素作比较
                            #如果不相等执行if语句
                            try:
                                if dataBody[rowNum-1][0]!=dataBody[rowNum][0] :
                                    print currentrow,rowNum
                                    #由于存在特殊情况,当前行号要为1
                                    #针对特定的数据规则从和并前三行和后七行
                                    if currentrow==1:
                                        for cols in range(3):
                                            #获取当前在合并单元格要保存的值
                                            cellValue=dataBody[currentrow][cols]
                                            #对单元格的值进行解码
                                            cellValue=cellValue.decode("gbk")
                                            #对单元格字符串进行加u
                                            #用来解决UnicodeDecodeError
                                            data=u"%s"  %(cellValue)
                                            #合并单元格并写入数据
                                            self.dataSheet.write_merge(currentrow,rowNum-1,cols,cols,data)
                                            
                                        for cols in range(6,13):
                                            cellValue=dataBody[currentrow][cols]
                                            cellValue=cellValue.decode("gbk")
                                            data=u"%s"  %(cellValue)
                                            self.dataSheet.write_merge(currentrow,rowNum-1,cols,cols,data)
                                    else:   
                                        for cols in range(3):
                                            cellValue=dataBody[currentrow][cols]
                                            cellValue=cellValue.decode("gbk")
                                            data=u"%s"  %(cellValue)
                                            self.dataSheet.write_merge(currentrow-1,rowNum-1,cols,cols,data)
                                        for cols in range(6,13):
                                            cellValue=dataBody[currentrow][cols]
                                            cellValue=cellValue.decode("gbk")
                                            data=u"%s"  %(cellValue)
                                            self.dataSheet.write_merge(currentrow-1,rowNum-1,cols,cols,data)                                           
                                    currentrow=rowNum+1                         
                                break
                            except Exception,e:
                                print "Merage cell Error:",e
                    
                    for cols in range(3,6):              
                        cellValue=dataBody[rowNum][cols]
                        cellValue=cellValue.decode("gbk")
                        data=u"%s"  %(cellValue)
                        self.dataSheet.write(rowNum,cols,data)
            except Exception,e:
                print "Write Data Error:",e
        except Exception,e:
            print "Write Data TO Excel Error:",e
    
    def savaExcel(self):
        try:
            savePath=self.dataInfor.fmObj.RequmentPath()
            self.wkbook.save(savePath)
        except Exception,e:
            print "Save Excel Error:",e
                    
    
    
                  
        
def test():
    GenTestCase()
    
if __name__=="__main__":
    test()

© 著作权归作者所有

henni_719
粉丝 2
博文 466
码字总数 343938
作品 0
信阳
QA/测试工程师
私信 提问
python操作excel表格(xlrd/xlwt)

python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库。可从这里下载https://pypi.python.org/pypi。下面分别记录python读和写excel. python读excel——xlrd 这个...

_周小董
2018/05/24
0
0
Python处理Excel数据

前段时间做了个小项目,帮个海洋系的教授做了个数据处理的软件。基本的功能很简单,就是对Excel里面的一些数据进行过滤,统计,对多个表的内容进行合并等。之前没有处理Excel数据的经验,甚至...

Lwxxx
2012/08/01
0
0
pandas指南:做更高效的数据科学家

摘要:Python是开源的,所以有很多开源固有的问题。如果你是Python新手,很难知道针对特定任务的包哪个是最好的。你需要有经验的人来告诉你。今天我要告诉你们的是:在数据科学中,有一个软件...

【方向】
01/24
0
0
Python处理csv、xlsx、pdf

一、csv文件的处理 CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与 Excel 文件不同,CSV 文件中: 值没有类型,所有值都是字符串 ...

blackfoxya
2018/06/08
0
0
用python统计3d彩票热门数据,看今天运势如何

快下班了,正好准备去买彩票,就顺手写了2个脚本,一个用来下载最近的彩票数据,一个用来统计彩票数字,分享给大家! 彩票数据获取并写入excel表格 数据来源自己看吧~用外链通不过。。。 所用...

猫咪编程
2018/07/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

跨域的理解,以及解决方案!

/*什么是跨域? * 跨域的主要原因是浏览器的同源策略。 * =>>所谓的同源策略就是A网页设置的 Cookie,B网页不能打开,除非这两个网页"同源"。 * 什么是同源? * =>>同源就是协议相同、域名相同...

流年那么伤
12分钟前
2
0
Nginx配置try_fiels,php无法获取$_GET参数

平时开发都是用LNMP,新安装的虚拟机在配置nginx的rewrite的时候使用try_files命令。但是在写的时候配置成“try_files $uri $uri/ /index.php?q=args;”, 在PHP的web程序中,打印$_GET为空。...

叫我哀木涕
13分钟前
0
0
【原创】Microsoft Edge可以用localhost访问但无法用IP访问

Microsoft Edge可以用localhost和127.0.0.1访问但无法用本机IP访问, chrome ie都可以推测是edge的问题,网络是专用网络,防火墙也关了: 在edge里 按F12 以在控制台里看到这句 CONSOLE21301...

shzwork
14分钟前
0
0
Python利用数学方程式画4种不一样的心型图案

前言 下面这四个心型图案,是通过科学地计算,根据数学方程式生成的,虽然做的不是特别完美,但是基本的还是能实现的 第一个心型 结果图 第二心型 结果图 学习从来不是一个人的事情,要有个相互监...

A_裙232550246
14分钟前
0
0
微信带场景参数的二维码生成与使用?

微信公众号推广时,用户通过扫二维码关注公众号,需要统计用户是通过谁的二维码进行关注。 在用户扫码关注公众号时,二维码带上推广者的参数,在关注公众号后,获取到该推广者的参数。 目前有...

wxgzhgncj
14分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部