Python 写Excel

来源:互联网 发布:斯普特尼克恋人 知乎 编辑:程序博客网 时间:2024/06/09 23:27

        Python有很多操作Excel的第三方库,这里用的则是Python自带的一个库叫csv,使用的时候直接import csv就行了。

rs =obj #数据集(我这里用的是mongodb数据库,所以这里的数据集是一个对象)

        csvfile = StringIO() #创建一个字符串缓存对象

        writer = csv.writer(csvfile)        #创建一个csv的writer对象


        titles = ["主题", "名称/设备IP", "监控项目", "工单信息" ,"工程师" ,"开始时间", "结束时间", "紧急程度"]
        writer.writerow(titles)        #在Excel文件第一行添加title
        for r in rs.get("results",[]): #循环数据集,把里面的数据一行一行的写进去(注:因为我这里是要把数据按照上面第一行对应的顺序写出来,所以循环写,如果不要这么做的话,也可直接这样子:   writer.writerow(rs) 把一个数据集直接写进去。
            listr = [r.subject, r.event.label, r.monitorObjName, r.content, r.user.engineer.titleOrUid(),
                     xutils.formartTime(r.startTime, fm="%Y-%m-%d %H:%M") ,
                     xutils.formartTime(r.endTime, fm="%Y-%m-%d %H:%M") ,
                      r.emergencyDegree]
            writer.writerow(listr)
        
csvfile = codecs.EncodedFile(csvfile, "gbk", "utf-8")#如果你碰到编码问题了就加上后面那两个参数吧,具体参数还是以你自己的环境而定,不一定是gbk和utf8哦

    csvfile.seek(0)#这句话一定不能漏,它是表示指针跳到文件开始的位置,这样下面的read才会从第0个字符串开始读取。
    data = csvfile.read() #read()表示读取到文件尾部,如果像这样read(5)在括号里加上数字,则是指明读取多少个字节。还有readline和readlines这两个函数,分别表示逐行读取和把数据读取到一个列表中去。
    csvfile.close()#关闭文件
    
    response = HttpResponse(data,mimetype='application/octet-stream') 
    response['Content-Disposition'] = 'attachment; filename=Appraisements_file.csv'
    return response#返回一个response结果到页面下载。

0 0