python各种excel写入方式的速度对比
作者:左手小兜 发布时间:2021-04-23 22:30:15
标签:python,excel,写入,速度
经过实验,新建一个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不能为空'
来源:https://blog.csdn.net/weixin_42336574/article/details/89384441


猜你喜欢
- 1, see the slow log status;mysql> show variables like '%slow%
- 初识defaultdict之前在使用字典的时候, 用的比较随意, 只是简单的使用dict.然而这样在使用不存在的key的时候发生KeyErr
- 生成.bmp格式的文件.bmp格式的图片是未压缩的图片,相比于.raw格式,需要加上头文件。下面以大小为M*N的图片为例,说明头文件格式和内
- 本文实例分析了php中ob_flush函数和flush函数用法。分享给大家供大家参考。具体如下:ob_flush()函数: 取出PHP bu
- 区别于redis的分布式缓存,ehcache是纯java进程内的单机缓存,根据不同的场景可选择使用,以下内容主要为springboot整合e
- 本文实例讲述了Python常用时间操作。分享给大家供大家参考,具体如下:我们先导入必须用到的一个module>>> imp
- 一、Oracle 11g安装安装之前要先确定自己的电脑配置,以windows为例,如果是win7以下系统如xp等,可以选择Oracle 10
- 安装pip install pyshp引入import shapefile读取sf=shapefile.Reader("{路径名}
- 本文为大家分享了python实现大音频文件语音识别功能的具体代码,供大家参考,具体内容如下实现思路:先用ffmpeg将其他非wav格式的音频
- 4 月 27 日,GitHub 趋势榜第 3 位是一个用 Python 编码实现的算法库,Star 数早已达到 26000+链接:https
- 这里发现可以采用三种的变通方法将置为disabled的元素状态改为enabled。 第一种:改变disabled的boolean状态,具体代
- Pytorch 多分类模型绘制 ROC, PR 曲线(代码 亲测 可用)ROC曲线示例代码import torchimport torch.
- 之前看到很多人一直都问这个问题,不过当时我没当一回事,因为在 CSS 中要垂直居中,多数是在有高度的情况下,或者容器高度不定的情况下才用,看
- 背景Translation插件在mac上idea能够搜索到,但是在windows上却搜索不到解决勾选上成功了。来源:https://blog
- 目录前言初始化项目设计代码实现按需加载播放音频录音长按事件运行调试总结前言相信很多养猫的人都很想跟自己的猫进行沟通,当猫咪发出各种不同声音的
- UDP 客户端一个使用UDP协议的客户端示例代码,用于实现连续对话。请注意,UDP是无连接协议,因此在实现连续对话时需要特别小心。以下是示例
- 本文实例讲述了Python表示矩阵的方法。分享给大家供大家参考,具体如下:在c语言中,表示个“整型3行4列”的矩阵,可以这样声明:int&n
- 本文实例讲述了Python文本统计功能之西游记用字统计操作。分享给大家供大家参考,具体如下:一、数据xyj.txt,《西游记》的文本,2.2
- 初步认识对于熟悉matplotlib三维画图的人来说,最常用的应该是plot_surface,但这个函数的绘图逻辑是,将xy平面映射到z轴,
- 函数作为值Go编程语言提供灵活性,以动态创建函数,并使用它们的值。在下面的例子中,我们已经与初始化函数定义的变量。此函数变量的目仅仅是为使用