经过实验,新建一个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 写入excel 效率_python各种excel写入方式的速度对比相关推荐

  1. python 写入第二列_python读写Excel表格的实例代码(简单实用)

    这篇文章主要介绍了python读写Excel表格的方法,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下.需要先安装两个库:pip install xlrd.pip ...

  2. python excel写入一列_python读取excel指定列数据并写入到新的excel方法

    如下所示: #encoding=utf-8 import xlrd from xlwt import * #------------------读数据------------------------- ...

  3. python生成表格文件_python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以 ...

  4. 从零开始用python处理excel数据_Python对Excel的操作

    Python几个读取Excel库的介绍: xlwings 可结合 VBA 实现对 Excel 编程,强大的数据输入分析能力,同时拥有丰富的接口,结合 pandas/numpy/matplotlib 轻 ...

  5. python读写excel表格_Python读写Excel表格(简单实用)

    首先安装两个库:pip install xlrd.pip install xlwt! 1.python读excel--xlrd2.python写excel--xlwt 1.读excel数据,包括日期等 ...

  6. python给excel排序_Python实现EXCEL表格的排序功能示例

    Python实现EXCEL表格的排序功能示例 EXCEL的数值排序功能还是挺强大的,升序.降序,尤其自定义排序,能够对多个字段进行排序工作. 那么,在Python大法中,有没有这样强大的排序功能呢?答 ...

  7. python上传excel文件_python读写Excel python实现Excel上传

    最近小编在处理各种.xlsx表格的数据处理和计算的工作,目前python用于操作表格的模块有很多,功能各有千秋.本文主要讲的是xlwt用于写,xlrt用于读. 表格写入 简单的写入功能可用xlwt模块 ...

  8. python数字求和程序_python操作excel求和

    这里介绍如何用python来自动完成我们的excel工作. 本文的目的是展示一些常见的Excel任务,以及如何在python pandas中执行类似的任务.例子微不足道,但重要的是通过这个例子来循序渐 ...

  9. python设置excel自动换行_python操作excel的方法(xlsxwriter包的使用)

    本文介绍python操作excel的方法(xlsxwriter包的使用),具体内容如下 xlsxwriter包的安装 pip install xlsxwriter Workbook类 创建一个exce ...

  10. python读取表格数据_Python读取Excel数据并根据列名取值

    一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...

最新文章

  1. 关于mac的一些常用操作记录
  2. python to_excel保存成xls_pd.ExcelWriter(to_excel)保存结果到已存在的excel文件中
  3. 2010世界杯主题曲夏奇拉献唱《Waka Waka》
  4. 在Linux中发现IP地址冲突的方法
  5. 深入理解CSS盒模型 - 程序猿的程 - 博客园
  6. 好文章,被架构师秒杀之后
  7. oracle11g创建表空间大文件,oracle11g创建表空间 sql语法
  8. (计算机组成原理题目题型总结)第一章:计算机系统概述
  9. mysql安装失败net_mysql安装后.net程序运行出错的解决方法
  10. java程序中单方法接口通常是,Android面试题1--Java基础之线程(持续更新)
  11. Java开发心得:HttpServletRequest基本功能
  12. repo一个新工程使用步骤
  13. c# asp.net 修改webconfig文件 配置
  14. 学习J2ME需要掌握的七种技术
  15. crmeb 一号通使用方法
  16. 准备好了吗?GNN 图神经网络 2021 年的5大应用热点
  17. mysql 获取当天0点 和 当天23点59分59秒
  18. 知道注册电子邮件的方法么?今天就告诉你邮箱申请免费注册的方法!
  19. 神奇的三门问题,到底换不换门
  20. 五大主流浏览器和内核

热门文章

  1. UIView延迟效果做出动画/UIView动画块
  2. ftp限制用户访问目录
  3. 基于netty,hessian的RPC框架
  4. how to send blogs to wordpress through the windows live writer
  5. 将excel文档转为word文档的方法
  6. [linux命令]基本命令
  7. 2019年初,我收到人生中的第一笔稿费
  8. python 判断点在随机多边形内_Python确定散点是否在多边形内,python,判断,内部
  9. SQLite数据库的使用——利用命令行或Navicat Premium创建数据库
  10. linux解压压缩命令