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. java 方法的重载、重写与重构

    首先我们要知道重载.重写.重构的区别 重载:指的是在同一个类中,方法名相同,但是参数数量.参数类型或者返回类型不同的方法就叫做重载. 重写: 重写分两种.第一种的是在子类继承父类的情况下,通过@Ove ...

  2. GitHub 热点速览 Vol.17:在?各家视频会员要不要?

    作者:HelloGitHub-小鱼干 摘要:经济实用,用作上周的 GitHub 热点的横批再合适不过.先不说 GitHub Trending 上不止一个的会员共享项目,免你找好友刷脸要会员,这项目实在 ...

  3. Flutter 分页功能表格控件

    老孟导读:前2天有读者问到是否有带分页功能的表格控件,今天分页功能的表格控件详细解析来来. PaginatedDataTable PaginatedDataTable是一个带分页功能的DataTabl ...

  4. DZ的CURD

    Discuz二次开发-MySQL插入数据(insert) DB::insert($tableName,$data,$flag); $tableName:表名 $data:插入数据,以字段为键值的关联数 ...

  5. 【shell】Shell变量基础及深入

    1. 什么是变量 变量就是用一个固定的字符串(也可能是字符数字等的组合),替代更多更复杂的内容,这个内容里可能还会包含变量和路径,字符串等其他内容. 变量的定义是存在内存中. x=1 y=2 2. 变 ...

  6. mac OS 安装 Eclipse

    安装Eclipse前先确认你的Mac上是否已安装Java运行环境.进入终端,输入"java -version",如果返回了java版本号则说明已安装 访问Eclipse官方首页ht ...

  7. vue2.0学习笔记(第八讲)(vue-cli的使用)

    vue-cli相当于脚手架,可以帮助我们自动生成模板工程.其内部集成了很多的项目模板,如simple.webpack.webpack-simple等.其中webpack这个项目模板适用于大型项目的开发 ...

  8. 最大公约数gcd、最小公倍数lcm

    最大公约数(辗转相除法) 循环: int gcd(int a,int b) { int r; ) { r=b%a; b=a; a=r; } return b; } 递归: int gcd(int a, ...

  9. 图论--网络流--最大流--POJ 3281 Dining (超级源汇+限流建图+拆点建图)

    Description Cows are such finicky eaters. Each cow has a preference for certain foods and drinks, an ...

  10. 过滤idea一些不需要的文件和文件夹的显示,在使用svn的时候可以很方便的过滤不需要提交的文件

    *.classpath;*.gitignore;*.hprof;*.idea;*.iml;*.lst;*.project;*.pyc;*.pyo;*.rbc;*.settings;*.sh;*.yar ...