python各种excel写入方式的速度对比


Posted in Python onNovember 10, 2020

经过实验,新建一个excel表格,该表格拥有7个sheet,每个sheet有800条数据,其中最后一个sheet为空。

首先使用openpyxl进行写入操作,代码如下:

book = openpyxl.Workbook()
auths = Auth.objects.filter(owner_id=1)
filename = '导出数据'
for auth in auths:
  sheet = book.create_sheet(auth.name, index = 0)
  sheet.append([
      _("书名"),
      _("作者"),
      _("译者"),
      _("出版社"),
      _("序列号"),
      _("总页数"),
    ])
  objs = None
  objs = Book.objects.filter(owner_id=auth.id)
  for u in objs:
    data = []
    data.append(u.name)
    data.append(auth.name)
    data.append(u.translator)
    data.append(u.press)
    data.append(u.serializer)
    data.append(u.page)
    sheet.append(data)
return ExcelBookResponse(book, filename)

使用xlwt写入数据:

book = xlwt.Workbook()
auths = Auth.objects.filter(owner_id=1)
filename = '导出数据'
for auth in auths:
  sheet = book.add_sheet(sensor.name)
  sheet.write(0, 0, _("书名"))
  sheet.write(0, 1, _("作者"))
  sheet.write(0, 2, _("译者"))
  sheet.write(0, 3, _("出版社"))
  sheet.write(0, 4, _("序列号"))
  sheet.write(0, 5, _("总页数"))
  i = 1
  objs = None
  objs = Book.objects.filter(owner_id=auth.id)
  for u in objs:
    sheet.write(i, 0, u.name)
    sheet.write(i, 1, auth.name)
    sheet.write(i ,2,u.translator)
    sheet.write(i ,3,u.press)
    sheet.write(i, 4, u.serializer)
    sheet.write(i, 5, u.page)
    i += 1
return ExcelBookResponse(book, filename)

使用XlsxWriter写入数据:

book = xlsxwriter.Workbook(output)
auths = Auth.objects.filter(owner_id=1)
for auth in auths:
  sheet = book.add_worksheet(sensor.name)
  header = [
      _("书名"),
      _("作者"),
      _("译者"),
      _("出版社"),
      _("序列号"),
      _("总页数"),
    ]
  sheet.write_row("A1", header)
  objs = Book.objects.filter(owner_id=auth.id)
  i = 1
  for u in objs:
    sheet.write(i, 0, u.name)
    sheet.write(i, 1, auth.name)
    sheet.write(i ,2,u.translator)
    sheet.write(i ,3,u.press)
    sheet.write(i, 4, u.serializer)
    sheet.write(i, 5, u.page)
    i += 1
book.close()
file_ext = 'xlsx'
mimetype = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
# self['Content-Disposition'] = 'attachment; filename*=UTF-8\'\'"{2}.{1}"; filename="{0}.{1}"'.format(filename.replace('"', '\"'), file_ext, urllib.parse.quote(filename.replace('"', '\"'))).encode('utf8')
return HttpResponse(content=output.getvalue(), content_type=mimetype)

三者的时间比较(两种方式的文件内容是一样的):

openpyxl: 文件大小为110.75kb, 平均时间大约为570ms

xlwt: 文件大小为505.91kb,平均时间大约为440ms

XlsxWrite: 文件大小为109.28kb,平均时间大约为500ms

xlwt写入的行数有限制,因此对于较大的文件来说,XlsxWrite的速度较快一点

补充知识:python写入excel文件太慢如何解决-python往excel写入大量数据

目前用的openpyxl,从数据库获取8W行的数据通过openpyxl写入excel,要花费接近8分钟,这也太慢了,用kettle的插件秒进,python有什么方法能提升速度么,或者openpyxl能批量插入么,按行效率太低了

#!/usr/bin/python
# -*- coding: UTF-8 -*-
from openpyxl import Workbook as wbook
def xlsx(filename, rows_info, sheet='Result'):
if filename and sheet:
wb = wbook()
_sheet = wb.active
_sheet.title = sheet
row = _sheet.max_row
for line in rows_info:
if isinstance(line, str):
row_list = [line]
elif isinstance(line, dict):
row_list = list(line.values())
else:
try:
row_list = list(line)
except:
row_list = []
for col in range(0, len(row_list)):
col_info = row_list[col]
_sheet.cell(row, col + 1, col_info)
row += 1
wb.save(filename)
else:
return '文件和sheet不能为空'

以上这篇python各种excel写入方式的速度对比就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python竟能画这么漂亮的花,帅呆了(代码分享)
Nov 15 Python
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
python如何在列表、字典中筛选数据
Mar 19 Python
Python基于property实现类的特性操作示例
Jun 15 Python
Python实现购物评论文本情感分析操作【基于中文文本挖掘库snownlp】
Aug 07 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
python使用requests.session模拟登录
Aug 09 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
python查看矩阵的行列号以及维数方式
May 22 Python
JupyterNotebook 输出窗口的显示效果调整实现
Sep 22 Python
opencv实现图像平移效果
Mar 24 Python
Python标准库之typing的用法(类型标注)
Jun 02 Python
Python 使用xlwt模块将多行多列数据循环写入excel文档的操作
Nov 10 #Python
详解vscode实现远程linux服务器上Python开发
Nov 10 #Python
Python调用飞书发送消息的示例
Nov 10 #Python
python中pyplot基础图标函数整理
Nov 10 #Python
python图片合成的示例
Nov 09 #Python
python 实现"神经衰弱"翻牌游戏
Nov 09 #Python
Python字典dict常用方法函数实例
Nov 09 #Python
You might like
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
PHP自定义函数格式化json数据示例
2016/09/14 PHP
你真的了解JavaScript吗?
2007/02/24 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
JavaScript的漂亮的代码片段
2013/06/05 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
jQuery使用attr()方法同时设置多个属性值用法实例
2015/03/26 Javascript
JavaScript实现多种排序算法
2016/02/24 Javascript
浅谈js的异步执行
2016/10/18 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
JS面向对象编程实现的拖拽功能案例详解
2020/03/03 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
使用vue实现HTML页面生成图片的方法
2020/03/12 Javascript
Vue CLI3移动端适配(px2rem或postcss-plugin-px2rem)
2020/04/27 Javascript
在webstorm中配置less的方法详解
2020/09/25 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
[01:03:09]完美世界DOTA2联赛PWL S2 Forest vs SZ 第二场 11.25
2020/11/26 DOTA
python八大排序算法速度实例对比
2017/12/06 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
python文件操作的简单方法总结
2019/11/07 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
html5 跨文档消息传输示例探讨
2013/04/01 HTML / CSS
StubHub澳大利亚:购买或出售您的门票
2019/08/01 全球购物
Cecil Mode法国在线商店:女性时尚
2021/01/08 全球购物
介绍一下Linux内核的排队自旋锁
2014/01/04 面试题
优秀本科生求职推荐信
2014/02/24 职场文书
品牌推广策划方案
2014/05/28 职场文书
中学生关于梦想的演讲稿
2014/08/22 职场文书
党支部书记四风问题整改措施
2014/09/24 职场文书
文明礼仪主题班会
2015/08/13 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python