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不能为空'
阅读 15.2k
4 个回答

你应该先确定一下你的时候是消耗查询数据上,还是在写入excel上,又或者是在下载excel的网络传输上?

我给你一个思路吧,试一下pandas来读取数据,然后直接to_excel就行了,pandas底层是C,应该很快,具体自己查下文档吧

pandas写Excel很简单啊,另外如果是scrapy的话,自带的有保存文件的命令。都很简单很好用的。

新手上路,请多包涵

多了一个_sheet.cell(row, col + 1).font.写入excel太慢如何解决,那个没看懂,请指点下,我也遇到同样问题

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题