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. Everything信息泄露

    Everything漏洞描述 [Everything]一款搜索文件非常快的工具,其速度之快令人震惊!它还有一个可以通过HTTP 或 FTP 分享搜索结果 的功能.它可以让用户在本地或局域网上的其他电脑 ...

  2. 深入浅出webpack笔记

    1.CommonJS CommonJS是一种被广泛使用的JavaScript模块化规范,其核心思想是用过require方法来同步加载依赖的其他模块,通过moudle.exports导出需要暴露的接口, ...

  3. 【轮询】【ajax】【js】【spring boot】ajax超时请求:前端轮询处理超时请求解决方案 + spring boot服务设置接口超时时间的设置

    场景描述: ajax设置timeout在本机测试有效,但是在生产环境等外网环境无效的问题 1.ajax的timeout属性设置 前端请求超时事件[网络连接不稳定时候,就无效了] var data = ...

  4. Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apache.hadoop.io.WritableComparable

    错误: Caused by: java.lang.ClassCastException: class java.lang.Double cannot be cast to class org.apac ...

  5. 14个快捷键让你的idea飞起来(新手向 + 演示)

    本期盘点一下博主在工作中,常用的13个idea快捷键,这些快捷键基本涵盖了大部分的开发场景,希望可以萌新们的idea使用效率,系统为mac系统 上一步 / 下一步撤销 / 反撤销进入一个类生成方法变量 ...

  6. css3--:target选择器称为目标选择器

    :target选择器称为目标选择器,用来匹配文档(页面)的url的某个标志符的目标元素.我们先来上个例子,然后再做分析. 示例展示 点击链接显示隐藏的段落. HTML代码: <h2>< ...

  7. Apk优化极致

    1. webp WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式.图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器宽带资源和数据空间.Facebook Ebay等知 ...

  8. Memcached在企业中的应用

    Memcached简介 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统. Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitz ...

  9. Scala教程之:Scala基础

    文章目录 常量 变量 代码块 函数 方法 类 case类 对象 trait main方法 这篇文章我们大概过一下Scala的基础概念,后面的文章我们会有更详细的讲解Scala的具体内容. 常量 在Sc ...

  10. MySQL分页查询的性能优化

    MySQL limit分页查询的性能优化 Mysql的分页查询十分简单,但是当数据量大的时候一般的分页就吃不消了. 传统分页查询:SELECT c1,c2,cn… FROM table LIMIT n ...