import xlwt
import os
import datetime #验证export_filed中的字段是否在对象字段中
def checkField(obj_list,filed_dict):
flag = True
msg = ''
if obj_list == []:
return False,'导出内容为空'
else:
for i in range(len(obj_list)):
for field in filed_dict:
try:
obj_list[i][field]
except:
flag = False
if len(msg) <=100:
msg +='第{0}行未找到{1}字段'.format(i+1,field)
else:
msg += '....'
break
return flag, msg #1.存放导出表格的目录
#2.table_name:导出的表格名字,不带后缀名,默认为.xls
#3. obj_list:需要导出对象集合 ,通过sql语句查询获得的对象集合
#4.export_filed:导出的字段和中文的对应关系,字段必须时对象里面包含的,
# 如{'name':'名字','age':'年龄'},不可为空,只有在这里的字段才会被导出
def tableExportToXlsx(export_dir,table_name,obj_list,filed_dict): #1.创建表格
workbook = xlwt.Workbook()
#创建excel的一个sheet
sheet = workbook.add_sheet(table_name,cell_overwrite_ok=True) #2.验证export_filed中的字段是否在对象字段中
flag,msg = checkField(obj_list,filed_dict)
if not flag:
return {'msg':msg}
else:#通过验证
attrs_list = []
#3.在表格第一行写入表格的中文字段,即是表头
#将表格字段提取出来转化成数组
table_index = [k for k,v in filed_dict.items()]
for i in range(len(table_index)):
#写入中文字段
sheet.write(0,i,filed_dict[table_index[i]]) #4.对象导入表格
for row in range(len(obj_list)):
for col in range(0,len(table_index)):
sheet.write(row+1,col,obj_list[row][table_index[col]]) #5.存储文件
if not os.path.exists(export_dir):
os.makedirs(export_dir)
#加上导出时间
export_time = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
file_name = '{0}-{1}.xls'.format(table_name,export_time)
save_path = os.path.join(export_dir,file_name)
print('文件路径为' + save_path)
try:
workbook.save(save_path)
except:
print(export_dir+'目录不存在') #6.检查是否导出成功
if os.path.isfile(save_path):
print('导出成功,文件为'+save_path)
return {'msg':'ok','file_name':file_name}
else:
msg = '存储文件发生异常,检查{0}目录是否存在'.format(export_dir)
print(msg)
return {'msg':msg}

Python脚本:实现对象集合List导入到excel表格,支持mysql,postergrsql,MongoDB的更多相关文章

  1. Java IO 导入导出Excel表格

    1.将excel导入到内存 1. 调用工作簿Workbook的静态方法getWorkbook(),获得工作簿Workbook对象 InputStream in = new FileInputStrea ...

  2. PHP导入导出excel表格图片(转)

    写excel的时候,我用过pear的库,也用过pack压包的头,同样那些利用smarty等作的简单替换xml的也用过,csv的就更不用谈了.呵呵.(COM方式不讲了,这种可读的太多了,我也写过利用wp ...

  3. python用paramiko将执行的结果存入excel表格

    一.paramiko 利用paramiko可以远程控制服务器,上传和下载文件. 1.paramiko密码登录方式: #!/usr/bin/env python #coding:utf-8import ...

  4. Java代码导入导出 Excel 表格最简单的方法

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...

  5. PHP导入导出excel表格图片的代码和方法大全

    基本上导出的文件分为两种: 1:类Excel格式,这个其实不是传统意义上的Excel文件,只是因为Excel的兼容能力强,能够正确打开而已.修改这种文件后再保存,通常会提示你是否要转换成Excel文件 ...

  6. Java利用POI实现导入导出Excel表格示例代码

    转自:https://www.jb51.net/article/95526.htm 介绍 Jakarta POI 是一套用于访问微软格式文档的Java API.Jakarta POI有很多组件组成,其 ...

  7. Python脚本:实现excel表格导入到数据库,支持mysql,postgresql,MongoDB

    import xlrd,re from datetime import datetime from xlrd import xldate_as_tuple # 判断上传表格是否与模板要求一致 def ...

  8. 使用python读取京东pdf发票信息导出到excel表格中

    代码 #!/usr/bin/env python # -*- coding: utf-8 -*- """ pip install pdfminer3k pip insta ...

  9. java将数据库中查询到的数据导入到Excel表格

    1.Maven需要的依赖 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> ...

随机推荐

  1. 处理时间的类 —— System类、Date类 、SimpleDateFormat类 与 Calendar类

    在我们以往的编程中,就有过通过运行前和运行后时间差来判断时间复杂度的例子,再扯得远一点,我们在C语言中制造随机数的操作,也要用到有关时间的函数.而且,在我们未来的编程中,也会时不时要用到能够读取当前时 ...

  2. VMware15 安装Mac 10.14系统/苹果系统

    安装环境 Windows专业版 VMware Workstation Pro 15 所需资源 VMware Workstation Pro 15.0.0 Build 10134415 官网下载地址:h ...

  3. SVM家族(一)

    SVM家族简史 故事要从20世纪50年代说起,1957年,一个叫做感知器的模型被提出, 1963年, Vapnikand Chervonenkis, 提出了最大间隔分类器,SVM诞生了. 1992年, ...

  4. react: typescript jest && enzyme

    Install Jest 1.install jest dependencies jest @types/jest ts-jest -D 2.jest.config.js module.exports ...

  5. python工业互联网监控项目实战4—python opcua

    前面章节我们采用OPC作为设备到上位的信息交互的协议,本章我们介绍跨平台的OPC UA.OPC作为早期的工业通信规范,是基于COM/DCOM的技术实现的,用于设备和软件之间交换数据,最初,OPC标准仅 ...

  6. 44道JavaScript送命题

    很久以前看过一个老外写的帖子,JavaScript Puzzlers!,直译就是JavaScript难题,里面列举了100道JavaScript选择题,大部分都是让人摸不着头脑的题目,需要仔细琢磨一番 ...

  7. Caused by: java.io.IOException: Type mismath in vlaue from map: excepted org.apache.hadoop.io.InaWritable,received SC

    解决办法: 看map和reduce的输入是不是对应,看看map和reduce设置的参数和下面的是否一致

  8. 编程是要偷懒的--option简练写法

    没改前: if(!empty($search)){ $where['personal_name'] = array('like','%'. $search . '%'); $this -> as ...

  9. 2019-2020-1 20199326《Linux内核原理与分析》第五周作业

    第五周学习内容 庖丁解牛Linux内核分析第四章:系统调用的三层机制(上) Linux内核分析实验四 学到的一些知识 4.1用户态.内核态.中断 宏观上Linux操作系统的体系架构分为用户态和内核态 ...

  10. (第四篇)Linux命令初识之常用系统管理命令

    1.hostname [命令作用]用于显示和设置系统的主机名称(但是不会永久保存,重启后会恢复) [命令语法]hostname(选项)(参数) [常用选项] -a:显示主机别名(alias name) ...