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}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM