文档章节

Python对excel写入数据操作实例代码(只供参考)

henni_719
 henni_719
发布于 2017/04/22 17:11
字数 656
阅读 3
收藏 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"测试状态"]
            #在表的起始行写入表头数据
            try:
                for index in range(len(firstLine)):
                    self.dataSheet.write(0,index,firstLine[index])
            except Exception,e:
                print "Creat Head Error:",e
                
            #把csv中读取的数据赋给变量dataBody  
            dataBody=self.dataInfor.buffer
            #设置个函数,用来记录要合并的起始行
            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实现批量解析PDF文件提取内容并写入到Excel中

摘要:最近需要将一批PDF文件中的某些数据整理到Excel中,因为文件数量接近20w+,手动更新几乎不现实,于是就提取关键词和内容动手写了个Python小工具,以实现自动完成上述目标。 要求: 基本...

_周小董
2018/05/20
0
0
Python处理csv、xlsx、pdf

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

blackfoxya
2018/06/08
0
0
python 编写自动化小工具 未完成

python 编写自动化小工具 Python split() python数据类型之间的转换 str(demo) python换行写入文件 !/usr/bin/env python ecoding=utf-8 f=open(r"D:opsdevolduseroldused.txt","a+") newlin......

iOS_愛OS
2018/06/21
0
0
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 管理 mysql 开发工具箱 - 1

Mysql 是一个比较优秀的开源的数据库,很多公司都在使用。作为运维人员,经常做着一些重复性的工作,比如创建数据库实例,数据库备份等,完全都可以使用 python 编写一个工具来实现。 一、模...

肖邦0526
2016/12/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

分布式项目(五)iot-pgsql

书接上回,在Mapping server中,我们已经把数据都整理好了,现在利用postgresql存储历史数据。 iot-pgsql 构建iot-pgsql模块,这里我们写数据库为了性能考虑不在使用mybatis,换成spring jd...

lelinked
今天
2
0
一文分析java基础面试题中易出错考点

前言 这篇文章主要针对的是笔试题中出现的通过查看代码执行结果选择正确答案题材。 正式进入题目内容: 1、(单选题)下面代码的输出结果是什么? public class Base { private Strin...

一看就喷亏的小猿
今天
1
0
cocoapods 用法

cocoapods install pod install 更新本地已经install的仓库 更新所有的仓库 pod update --verbose --no-repo-update 更新制定的仓库 pod update ** --verbose --no-repo-update...

HOrange
今天
3
0
linux下socket编程实现一个服务器连接多个客户端

使用socekt通信一般步骤 1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。 2)客户端:socker()建立套接字,连接(connect)服务器,连接上后...

shzwork
昨天
2
0
android自定义viewgroup画背景

设计部要求背景实现一个背景边框带圆弧的效果: 所以想着用自定义控件画一个背景。 为了方便,继承的是LinearLayout,在onMeasure中先获取控件宽高: @Overrideprotected void onMeasure(in...

醉雨
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部