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. Liunx常用操作(一)-删除命令

    在linux命令行模式下,如何一次性快速删除一行刚刚输入的命令? 经常在命令行输入命令的时候,一段文字都需要删除,一个字段一个字段,比较耗费时间 以下提供一些命令,配合在一起操作,可以一定程度提高工作 ...

  2. hashlib的md5计算

    hashlib的md5计算 hashlib概述 涉及加密服务:Cryptographic Services 其中 hashlib是涉及 安全散列 和 消息摘要 ,提供多个不同的加密算法借口,如SHA1 ...

  3. 浏览器插件之王-Tampermonkey(油猴脚本)

    大家电脑都在使用浏览器,相信大家对浏览器插件也不陌生,浏览器插件是安装在浏览器里面,对浏览器功能进行拓展的脚本,现在的主流浏览器都有各种各样的插件如图: 这些插件让我们的上网方便了许多,有去广告的插件 ...

  4. 手机app测试用例怎么写?手机app测试点有哪些?只有干货没有水分,错过绝对后悔!

    一.前言    在当今竞争激烈的市场上一个APP的成功离不开一个可靠的测试工程师.因此,对功能和用户体验有特殊关注的App进行全面测试是必不可少的.如何做到测试用例的百分百覆盖一直是测试用例编写过程中 ...

  5. 进程管理工具 Supervisor

    要想在终端后台常驻进程,首先想到的是在命令后加 & 符号,来达到隐藏程序在后台的目的,尽管看起来进程已经在后台运行了,实际上终端会话关闭时进程还是会被 kill 掉,这种问题一般是采用搭配 n ...

  6. LeetCode 面试题51. 数组中的逆序对

    面试题51. 数组中的逆序对 题目来源:https://leetcode-cn.com/problems/shu-zu-zhong-de-ni-xu-dui-lcof/ 题目 在数组中的两个数字,如果 ...

  7. 详解 Discuz 的 PHP经典加密解密函数 authcode

    函数注释: // $string: 明文 或 密文 // $operation:DECODE表示解密,其它表示加密 // $key: 密匙 // $expiry:密文有效期 function auth ...

  8. [Inno Setup] 字符串列表,当要处理一长串文件时很有用

    https://wiki.freepascal.org/TStringList-TStrings_Tutorial TStringList-TStrings Tutorial │ Deutsch (d ...

  9. Spring MVC 中的http Caching

    文章目录 过期时间 Last-Modified ETag Spring ETag filter Spring MVC 中的http Caching Cache 是HTTP协议中的一个非常重要的功能,使 ...

  10. shell脚本(多线程批量创建用户)

    shell脚本中的多线程 很多场景中会用到多线程,例如备份数据库,有100个库,正常备份效率极其低下.有了多线程原本可能需要10个小时备份,现在分10个线程同时去干,只要一个小时就解决了.今天就介绍下 ...