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}
原文地址:https://www.cnblogs.com/lelexiu/p/10192263.html