zoukankan      html  css  js  c++  java
  • Python脚本:实现对象集合List导入到excel表格,支持mysql,postergrsql,MongoDB

     1 import xlwt
     2 import os
     3 import datetime
     4 
     5 
     6 
     7 #验证export_filed中的字段是否在对象字段中
     8 def checkField(obj_list,filed_dict):
     9     flag = True
    10     msg = ''
    11     if obj_list == []:
    12         return False,'导出内容为空'
    13     else:
    14         for i in range(len(obj_list)):
    15             for field in filed_dict:
    16                 try:
    17                     obj_list[i][field]
    18                 except:
    19                     flag = False
    20                     if len(msg) <=100:
    21                         msg +='第{0}行未找到{1}字段'.format(i+1,field)
    22                     else:
    23                         msg += '....'
    24                         break
    25         return flag, msg
    26 
    27 
    28 
    29 #1.存放导出表格的目录
    30 #2.table_name:导出的表格名字,不带后缀名,默认为.xls
    31 #3. obj_list:需要导出对象集合 ,通过sql语句查询获得的对象集合
    32 #4.export_filed:导出的字段和中文的对应关系,字段必须时对象里面包含的,
    33 # 如{'name':'名字','age':'年龄'},不可为空,只有在这里的字段才会被导出
    34 def tableExportToXlsx(export_dir,table_name,obj_list,filed_dict):
    35 
    36     #1.创建表格
    37     workbook = xlwt.Workbook()
    38     #创建excel的一个sheet
    39     sheet = workbook.add_sheet(table_name,cell_overwrite_ok=True)
    40 
    41     #2.验证export_filed中的字段是否在对象字段中
    42     flag,msg = checkField(obj_list,filed_dict)
    43     if not flag:
    44         return {'msg':msg}
    45     else:#通过验证
    46         attrs_list = []
    47         #3.在表格第一行写入表格的中文字段,即是表头
    48         #将表格字段提取出来转化成数组
    49         table_index = [k for k,v in filed_dict.items()]
    50         for i in range(len(table_index)):
    51             #写入中文字段
    52             sheet.write(0,i,filed_dict[table_index[i]])
    53 
    54         #4.对象导入表格
    55         for row in range(len(obj_list)):
    56             for col in range(0,len(table_index)):
    57                 sheet.write(row+1,col,obj_list[row][table_index[col]])
    58 
    59         #5.存储文件
    60         if not os.path.exists(export_dir):
    61             os.makedirs(export_dir)
    62         #加上导出时间
    63         export_time = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
    64         file_name = '{0}-{1}.xls'.format(table_name,export_time)
    65         save_path = os.path.join(export_dir,file_name)
    66         print('文件路径为' + save_path)
    67         try:
    68             workbook.save(save_path)
    69         except:
    70             print(export_dir+'目录不存在')
    71 
    72         #6.检查是否导出成功
    73         if os.path.isfile(save_path):
    74             print('导出成功,文件为'+save_path)
    75             return {'msg':'ok','file_name':file_name}
    76         else:
    77             msg = '存储文件发生异常,检查{0}目录是否存在'.format(export_dir)
    78             print(msg)
    79             return  {'msg':msg}
  • 相关阅读:
    函数传参的方式
    统计一个文本中单词频次最高的 10 个单词?
    统计一个文本中单词频次最高的 10 个单词?
    python每日练习0801
    关键字驱动小练习
    Fiddler抓包从入门到不放弃
    pycharm2019.1.3激活方法--激活码可以用到2089年
    Selenium+Python调Chrome浏览器时报Traceback (most recent call last): File "C:/Users/EDZ/Desktop/selenium_demo/demo001.py", line 12, in <module>
    JMeter服务端压测,人人都会的小白版本
    XShell命令大全
  • 原文地址:https://www.cnblogs.com/lelexiu/p/10192263.html
Copyright © 2011-2022 走看看