zoukankan      html  css  js  c++  java
  • python 生成excel

    [['NCBS', 11, 766005, 766016, 0.9999856399866321], ['LOAN', 2, 106474, 106476, 0.9999812164243586], ['IBPS', 14, 39787, 39801, 0.9996482500439687], ['IBANK', 1, 6415, 6416, 0.9998441396508728]]
    
    
    # !/usr/bin/env python
    # -*- coding: utf-8 -*-
    import MySQLdb
    from datetime import datetime
    import cx_Oracle
    import os
    import xlwt
    import sys
    
    reload(sys)
    import time
    
    sys.setdefaultencoding('utf-8')
    os.environ['NLS_LANG'] = 'SIMPLIFIED CHINESE_CHINA.UTF8'
    import datetime  # 导入日期时间模块
    
    today = datetime.date.today()  # 获得今天的日期
    yesterday = today - datetime.timedelta(days=1)
    i = 0
    def write_data_to_excel(name, result):
        # 将sql作为参数传递调用get_data并将结果赋值给result,(result为一个嵌套元组)
        result = result
        print result
        # 实例化一个Workbook()对象(即excel文件)
        wbk = xlwt.Workbook(encoding='utf-8')
        # 新建一个名为Sheet1的excel sheet。此处的cell_overwrite_ok =True是为了能对同一个单元格重复操作。
        sheet = wbk.add_sheet('Sheet1', cell_overwrite_ok=True)
        # 获取当前日期,得到一个datetime对象如:(2016, 8, 9, 23, 12, 23, 424000)
        #today = datetime.today()
        # 将获取到的datetime对象仅取日期如:2016-8-9
        #today_date = datetime.date(today)
        # 遍历result中的没个元素。
        titlelist=['系统标识','交易失败笔数','交易成功笔数','交易总笔数','交易成功率']
        # for i in xrange(len(titlelist)):
        #     sheet.write(1, i, titlelist[i])
        # wbk.save(name + str(yesterday) + '.xls')
        for i in xrange(len(result)):
            # 对result的每个子元素作遍历,
            if i==0:
                for x in xrange(len(titlelist)):
                    sheet.write(0, x, titlelist[x])
            for j in xrange(len(result[i])):
                y=i+1
                # 将每一行的每个元素按行号i,列号j,写入到excel中。
                print result[i][j]
                sheet.write(y, j, result[i][j])
        # 以传递的name+当前日期作为excel名称保存。
        wbk.save(name + str(yesterday) + '.xls')
    
    def get_data():
        applist=['NCBS','LOAN','IBPS','IBANK']
        list = [[] for i in range(len(applist))]
        print list
        i=0
        for x in applist:
            print i
            print x
            conn = cx_Oracle.connect('esbdata/esbdata@1.1.1.1/esbdb')
            cur = conn.cursor()
            mysql="select  /*+parallel(t 8)*/ cnt1 as 失败笔数,(cnt2 - cnt1) as 成功笔数,cnt2 as 总笔数 ,(cnt2 - cnt1)/cnt2 as 成功率 from (select (select count(*) 
                from esb2_trans_log t 
                where t.trans_date >= 
                  trunc(sysdate) 
                  and  t.trans_date <= 
                  trunc(sysdate+1) 
                  and (t.respmsg like '%%Read timed out%%' or t.respmsg like '%%异常%%' or 
                  t.respmsg like '%%超时%%' or t.respmsg like '%%通讯%%失败%%') 
                  and t.logicsystem='%s' 
                     and t.esbserviceflowno<>'000000' 
                 and t.flowstepid in ('4','E') ) cnt1 , 
                 ( select  /*+parallel(t 8)*/  count(*) 
                 from esb2_trans_log t 
                 where  t.trans_date >= 
                 trunc(sysdate) 
                 and  t.trans_date <= 
                 trunc(sysdate+1) 
                 and t.logicsystem='%s' 
                 and t.flowstepid in ('4','E') 
                 ) cnt2   from dual)" %(x,x)
            print mysql
            cur.execute(mysql)
            arr01= cur.fetchone()
            print arr01
            title='交易系统成功率'
            title = title.decode('utf-8').encode('gbk')
            db_dict = {title: arr01}
            cur.close()
            conn.close
            list[i].append(x)
            list[i].append(arr01[0])
            list[i].append(arr01[1])
            list[i].append(arr01[2])
            list[i].append(arr01[3])
            # # 遍历字典每个元素的key和value。
            # for k, v in db_dict.items():
            # # 用字典的每个key和value调用write_data_to_excel函数。
            #   write_data_to_excel(k, v)
            i=i+1
        return list
    title='交易系统成功率'
    title = title.decode('utf-8').encode('gbk')
    arr02=get_data()
    db_dict = {title: arr02}
    for k, v in db_dict.items():
         write_data_to_excel(k, v)
    
  • 相关阅读:
    07_zookeeper的客户端工具curator_基本api
    06_zookeeper原生Java API使用
    05_zookeeper的ACL
    04_zookeeper的watcher机制
    03_Zookeeper基本数据模型及基本命令操作
    02_zookeeper配置
    01_Zookeeper简述
    thinkphp之url的seo优化
    thinkphp Upload上传文件在客户端生成的临时文件$_FILES['file']['tmp_name']
    php过滤表单输入的emoji表情
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13348837.html
Copyright © 2011-2022 走看看