python3使用openpyxl导出巨大量数据到excel文件

python3中的openpyxl处理EXCEL的xlsx文件 使用openpyxl处理EXCEL的xlsx文件,前两部分代码可直接拷贝运行,里面有说明,上手较容易。 阅读详情

今天接到一个业务的需求,需要把一部分据大量的数据导出excel,数据达到千万级
从一开始打算直接使用plsql导出tsv文件,然后直接脚本处理,后来发现数据量太大,在查询的过程中一不小心出现闪断,前功尽弃。于是根据条件进行数据分片,大的几百万,小的几十万。
针对office2007以后的版本,xlsx文件上限行数大约为100多万条的样子。
以上是前提。
开始使用openpyxl将tsv文件记录转换成excel的时候,想着尽可能多的将记录写入一个文件,后来发现太天真,8G内存直接占满,使用量99% - 100%。没奈何使用分片方法,大约50万条记录生成一个xlsx文件,
脚本如下代码区。
实际运行过程中,内存使用量稳定在30%-40%之间,还算可以。后边是日志。

file_nums = ["0112","0115","0123","0125","0126","0129","0130"]

start = time.time()
lines = []
try:
    for file_num in file_nums:
        file_name_ext = 1
        file_path = "F:\\export{}.tsv".format(file_num)
        out_path = "B:\\export{}{}.xlsx".format(file_num,"_"+str(file_name_ext))

        lines.clear()
        with open(file_path, 'r', encoding="utf-8") as file:
            print("write all file begin")
            line_num = 0
            for line in file:
                line_tmp = line.split('\t')
                lines.append(line_tmp)
                line_num += 1
                if line_num % 500000 == 0:
                    part_start = time.time()
                    print("write file {} at :{}".format(out_path,part_start))
                    workbook = openpyxl.Workbook(write_only=True)
                    sheet = workbook.create_sheet()

                    for l in lines:
                        sheet.append(l)

                    workbook.save(out_path)
                    workbook.close()
                    workbook = None
                    file_name_ext += 1
                    out_path = "B:\\export{}{}.xlsx".format(file_num, "_" + str(file_name_ext))

                    part_end = time.time()
                    print("file {} write done at :{}".format(out_path, part_end))
                    print("part used : {}".format(str(part_end - part_start)))
                    lines.clear()

            if lines and len(lines) > 0:
                part_start = time.time()
                print("write file {} at :{}".format(out_path, part_start))
                workbook = openpyxl.Workbook(write_only=True)
                sheet = workbook.create_sheet()

                for l in lines:
                    sheet.append(l)

                workbook.save(out_path)
                workbook.close()
                workbook = None
                part_end = time.time()
                print("file {} write done at :{}".format(out_path, part_end))
                print("part used : {}".format(str(part_end - part_start)))
                lines.clear()

except Exception as e:
    print(e)

end = time.time()
total = end - start
print("write all file finish, used {} times".format(total))

控制台打印日志部分:

write all file begin
write file B:\export0112_1.xlsx at :1517926709.4048114
file B:\export0112_2.xlsx write done at :1517926758.3921452
part used : 48.98733377456665
write file B:\export0112_2.xlsx at :1517926759.657679
file B:\export0112_3.xlsx write done at :1517926808.537671
part used : 48.87999200820923
write file B:\export0112_3.xlsx at :1517926809.696322
file B:\export0112_4.xlsx write done at :1517926859.3176138
part used : 49.62129187583923
write file B:\export0112_4.xlsx at :1517926860.551937
file B:\export0112_5.xlsx write done at :1517926910.1919634
part used : 49.640026330947876
write file B:\export0112_5.xlsx at :1517926911.337625
file B:\export0112_6.xlsx write done at :1517926960.894076
part used : 49.556451082229614
write file B:\export0112_6.xlsx at :1517926962.0258036
file B:\export0112_7.xlsx write done at :1517927011.4833808
part used : 49.45757722854614
write file B:\export0112_7.xlsx at :1517927012.7268114
file B:\export0112_8.xlsx write done at :1517927061.5736873
part used : 48.8468759059906
write file B:\export0112_8.xlsx at :1517927062.6536007
file B:\export0112_9.xlsx write done at :1517927111.822423
part used : 49.168822288513184
write file B:\export0112_9.xlsx at :1517927113.0346901
file B:\export0112_10.xlsx write done at :1517927162.1026373
part used : 49.06794714927673
write file B:\export0112_10.xlsx at :1517927163.3083832
file B:\export0112_11.xlsx write done at :1517927212.4063733
part used : 49.09799003601074
write file B:\export0112_11.xlsx at :1517927212.8430336
file B:\export0112_11.xlsx write done at :1517927230.3664558
part used : 17.523422241210938
write all file begin
write file B:\export0115_1.xlsx at :1517927230.3875127
file B:\export0115_1.xlsx write done at :1517927230.4441934
part used : 0.05668067932128906
write all file begin
write file B:\export0123_1.xlsx at :1517927231.383569
file B:\export0123_1.xlsx write done at :1517927265.6331534
part used : 34.249584436416626
write all file begin
write file B:\export0125_1.xlsx at :1517927267.00361
file B:\export0125_2.xlsx write done at :1517927316.4248767
part used : 49.42126679420471
write file B:\export0125_2.xlsx at :1517927317.801019
file B:\export0125_2.xlsx write done at :1517927370.0042286
part used : 52.20320963859558
write all file begin
write file B:\export0126_1.xlsx at :1517927371.6056333
file B:\export0126_2.xlsx write done at :1517927427.7860975
part used : 56.18046426773071
write file B:\export0126_2.xlsx at :1517927429.2113287
file B:\export0126_3.xlsx write done at :1517927481.465444
part used : 52.25411534309387
write file B:\export0126_3.xlsx at :1517927482.6818128
file B:\export0126_3.xlsx write done at :1517927526.3801858
part used : 43.69837307929993
write all file begin
write file B:\export0129_1.xlsx at :1517927527.860628
file B:\export0129_2.xlsx write done at :1517927580.998396
part used : 53.137768030166626
write file B:\export0129_2.xlsx at :1517927582.5338671
file B:\export0129_3.xlsx write done at :1517927640.1109939
part used : 57.5771267414093
write file B:\export0129_3.xlsx at :1517927640.3472462
file B:\export0129_3.xlsx write done at :1517927647.2646072
part used : 6.91736102104187
write all file begin
write file B:\export0130_1.xlsx at :1517927647.2751348
file B:\export0130_1.xlsx write done at :1517927647.291679
part used : 0.016544103622436523
write all file finish, used 938.9572479724884 times

Process finished with exit code 0
python实现pandas+openpyxl导出excel报表 目录1.导出excel文件2.隐藏或删除行、列3.合并单元格并填入数据4.添加边框5.调整行、列宽6.更改表格样式7.单元格颜色8.单元格插入公式、更改数字格式9.实现 由于数据的繁杂和日渐增多,报表成为工作上必不可少的一部分,报表的实现既能将数据有规划的整理也能把一大串繁琐的数据变得更加简洁可观。但是用excel处理大量的报表,工作量可想而知,每次都需要在月头和周头花费大量的时间来整理报表。自从学了python,就方便多了,将数据导入用python整理好后,保存为excel文件简直不要太简单,每次有需要的 阅读详情

相关推荐

python日常实用技能:使用python将大量数据导出到Excel中的

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 (1) 问题描述:为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢? 本文主要解决以上两个问题。 (2)具体步骤如下: 1.第一步,安装openpyxl, 使用pip install openpyxl即可,但是在windows下安装的是2.2.6版本,但是centos自动安装的是4.1版本,(多谢海哥的提醒)。 写的代码在w

python基础学习教程 3613

python与excel-Python和Excel终于可以

今天小编为大家分享一篇使用python将大量数据导出到Excel中的技巧心得,可以让Python和Excel的数据实现互通!具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧!一. 问题描述为了更好地展示数据,Excel格式的数据文件往往比文本文件更具有优势,但是具体到python中,该如何导出数据到Excel呢?如果碰到需要导出大量数据又该如何操作呢?二. 具体步骤Step 1 安装...

q6q6q的专栏 2861

Python中将实体类列表数据导出到Excel文件

首先,我们需要定义一个实体类(也称为数据模型或对象)。这个类将包含我们要导出到Excel的数据字段。在这个例子中,我们定义了一个Person类,它有三个属性:name、age和email。通过本文的实战案例,我们展示了如何使用Python将实体类列表数据导出到Excel文件。我们定义了实体类,创建了实体类列表,将列表转换为pandas的DataFrame,并使用to_excel()方法将DataFrame导出到Excel文件。这个过程简单明了,非常适合处理表格数据的导出任务。

这家伙很懒,什么都没有留下 2422

python 使用openpyxl读写大文件的坑

由于需要处理xlsx类型的文件,我使用了openpyxl来处理,然而文件比较大,大约有60多MB。读文件的时候虽然慢了一点,但还是能够读出来,但是当我想写入时却报错了。 显示设备没有多余的空间,百度了一下,发现有不少关于openpyxl读写大文件的问题。总结来看,解决方案主要有以下两种,当然,我两种都用上了。 手动释放内存 del wb, ws gc.collect() 这一招还算有用,在读完文件后可以看到内存占用明显下降了一点。 安装lxml 使用命令·pip install lxml安装依赖 这个依

valark的博客 4433

【Python教程】python如何把数据导出生成excel

在Python中,将数据导出生成Excel文件,最常用的库之一是openpyxl(用于处理.xlsx文件)和pandas(提供了更高级的数据处理功能,并且可以很方便地将DataFrame导出到Excel)。以下将分别介绍如何使用这两个库来生成Excel文件。

No8g攻城狮的博客 4075

基于STM32与HRTIM的四开关Buck-Boost双向DC-DC电源设计实战(附源码、仿真与设计解析)

本文详细介绍了基于STM32F334的HRTIM高分辨率定时器实现四开关Buck-Boost双向DC-DC电源的设计实战。通过精准的PWM控制、双环PID算法和智能模式切换逻辑,解决了电压震荡与效率优化等关键问题,并提供了完整的源码、PSIM仿真及参数计算,为高性能电源设计提供了实用参考。

7z8x2c4v6b9的博客 299

使用python,openpyxl教你轻松搞定了excel大数据写入。大量数据导入无忧。

除了做程序的开发,有可能你还要自己做一下性能的测试,例如一个导入功能,你需要导入大批量的数据,多到什么程度。 几万条甚至几十万条数据。 导入的数据我们第一个想到的当然是excel导入数据。那几万条数据我们需要怎么处理呢。 首先像想一下,我先写满一行数据,20个字段,ok,搞定,然后我们来……下拉,拉到一半然后 你就绝望了,怎么30分钟过去了才两万条数数据。 很显然,费时费力,时间一长你就会发现头昏眼花。来这里我们来一个完整的代码模板,帮助你轻松搞定所有的数...

大家一起学编程(python) 6082

CTR模型:Deep&Cross Network

1. 简介 DCN模型(Deep & Cross Network for Ad Click Predictions)是2017年提出的。 出发点: (1)人工探索所有的交叉特征是不现实的; (2)难于推广未曾出现过的交叉特征。 DNN能够自动探索交叉特征并推广到未出现过的交叉特征,但是DNN的学习效率不高,且无法显式的学习特征交叉。 Deep&Cross Network, DCN 模型保留了DNN的优点,并提出了新的cross network,高效学习高阶特征交互。 优点: (1)cross

rosefun96的博客 9358

如何优化Python读取大文件的内存占用与性能

除了以上提到的优化方式以外,我们还可以使用第三方库来优化文件读取性能,比如使用pandas库中的read_csv函数来逐块读取大型CSV文件。内存映射文件是一种将文件映射到内存中的技术,可以在内存中直接操作文件,而不需要将整个文件加载到内存中。在这段优化后的代码中,我们使用了mmap.mmap函数将文件映射到内存中,并使用iter函数逐行读取文件。这样就可以在内存中直接操作文件,而不需要将整个文件加载到内存中。在优化后的代码中,我们使用了一个while循环来逐行读取文件,并在处理完每一行后立即释放内存。

qalangtao的博客-qalangtao.com 1868

解决VM 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VM 的方法

在启用了Credential Guard或Device Guard的Windows 10主机上启动12.5版之前的VMware Workstation中的虚拟机时,将显示蓝色诊断屏幕(BSOD)。 会看到类似于以下内容的错误: VMware Workstation和Device / Credential Guard不兼容。禁用Device / Credential Guard后,可以运行VMwar...

Hern(宋兆恒) 39万+

微信小程序后台定位与实时位置更新的实战指南

本文提供了微信小程序实现后台定位与实时位置更新的完整实战指南。针对小程序退到后台后位置更新中断的痛点,详细解析了基于`startLocationUpdateBackground`API的后台定位解决方案。内容涵盖从隐私协议配置、项目权限声明,到授权、启动、监听、停止的核心代码流程,并分享了真机调试、性能优化及权限引导等关键避坑经验,帮助开发者构建稳定可靠的后台位置服务。

weixin_29008055的博客 468

Python办公自动化:批量提取Excel数据

今天我们来讲解一个比较简单的案例,使用openpyxl从Excel中提取指定的数据并生成新的文件,之后进一步批量自动化实现这个功能,通过本例可以学到的知识点: openpyxl模块的运用 glob模块建立批处理 数据源:阿里云天池的电商婴儿数据(可自行搜索并下载,如果要完成进阶难度可直接将该数据Excel拷贝999次即可,当然这个拷贝可以交给代码来实现) 需求说明 初级难度:提取电商婴儿数据.xlsx中购买数buy_mount超过50的记录建立新的Excel表 最后形成如下的表格: 进阶难度:同一个文件

AwesomeDong的博客 7248

Android 11多窗口+分屏+APP窗口嵌套TaskView实现原理一

然而随着版本的迭代升级,google对分屏的定制差异化也越来越大,Androd 11的分屏用的是split-screen-primary和split-screen-secondary的方式,在systemui中去实现的,其定制化的灵活度不是很高,很多业务都是放到sustemui或者fw去实现,但是随着版本的升高,后面出现了TaskView来替代了老版本的分屏方式,但是Task的核心原理其实和之前的方式是一样的,TaskView来实现分屏。

qq_18420641的博客 2615

Python使用openpyxl模块读写excel文件

Python使用openpyxl模块读写excel文件 openpyxl是一个用于写入和读取xlsx格式的excel文件的Python模块。 excel2010后的后缀名为xlsx,不再是xls,使用openpyxl是最适合对xlsx文件进行读取的库。 一、安装openpyxl pip install openpyxl 二、使用openpyxl将数据写入excel文件 import...

weixin_43790276的博客 2万+

PLC模糊控制模糊PID(梯形图实现+算法分析)

博途PLC的模糊PID控制详细内容请查看下面的博客文章:Matlab仿真+博途PLC模糊PID控制完整SCL源代码参考(带模糊和普通PID切换功能)_博途怎么实现模糊pid_RXXW_Dor的博客-优快云博客模糊PID的其它相关数学基础,理论知识大家可以参看专栏的其它文章,这里不再赘述,本文就双容水箱的模糊PID问题做详细讲解(包括所有源代码和模糊规则设置参数)。

RXXW_Dor的博客 5884

【数字孪生与仿真技术】05:从原理到实战:MATLAB/Simulink在航空航天GNC系统开发中的深度解析(含全流程代码与认证指南)

摘要:本文系统阐述MATLAB/Simulink在航空航天制导、导航与控制(GNC)系统开发中的核心应用。通过解析GNC系统高保真动力学建模、多源导航传感器融合、鲁棒控制算法设计等关键技术原理,结合Virgin Orbit运载火箭、CubeSat等真实案例,展示从需求分析、模型搭建、仿真验证到代码生成与认证的完整开发流程。文中提供1200余行关键代码、8个可复用Simulink模型及详细执行结果展示,涵盖DO-178C认证支持、实时性能优化等工业级开发规范,为航空航天工程师、科研人员提供可落地的参考方案。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1656

python openpyxl读取excel_python 使用openpyxl读取excel数据

openpyxl介绍​ openpyxl是一个开源项目,它是一个用于读取/写入Excel 2010文档(如xlsx 、xlsm 、xltx 、xltm文件 )的Python库,如果要处理更早格式的Excel文档(xls),需要用到其它库(如:xlrd、xlwt等),这是openpyxl比较其他模块的不足之处。openpyxl是一款比较综合的工具,不仅能够同时读取和修改Excel文档,而且可以对Ex...

weixin_30030437的博客 8594

RK+linux教程:RK3588 RGA硬件加速在YOLOv5图像预处理中的深度应用教程

摘要: 本教程深入解析了RK3588芯片的RGA硬件加速器在YOLOv5图像预处理中的应用。通过专用硬件设计,RGA支持图像缩放、边界填充等核心操作,结合零拷贝技术显著提升处理效率。重点分析了LetterBox算法的RGA实现,包括参数计算、边界填充和性能优化,并与传统CPU处理对比,展示了RGA在高分辨率图像处理中的优势。教程还提供了统一的预处理接口设计,便于在OpenCV与RGA方案间灵活切换,为RK3588平台的深度学习部署提供实用优化方案。

LXY_LOVE36的博客 976

python使用openpyxl处理excel

2、认识excel窗口 明确下行(row),列(column),单元格(cell),坐标(coordinate)与表(sheet)的概念。 这里还要注意一点,在Excel中是从1开始计数的,并不是像程序编码中0开始,这点很重要。比如图中 【后羿】标出来的格子对应的单元格是B4,B4就是它的坐标。 2、获取sheet表格 3、获取sheet表格 尺寸 4、获取单元格数据 单元格数据除了坐标的方式来定位,我们还可以用行列来找到它,比如B2对应的是第2行第2列(row=2,column=2), C4对应的是

秃了也弱了 4132

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Python3+openpyxl 导出海量数据到 Excel:性能优化实战指南

《Python+openpyxl导出海量数据到Excel的性能优化指南》介绍了处理大数据量Excel导出的关键技术。文章针对openpyxl在处理10万条以上数据时的内存溢出与速度问题,提出分块处理、关闭冗余功能、启用只写模式等优化方案。通过具体代码示例演示了10万条数据的分块导出实现(耗时降至4.3秒)和100万+数据的"数据库分页+流式写入"进阶方案。关键优化点包括:5000-10000条的分块处理、禁用自动计算、使用Workbook(write_only=True)等。文中还提供了

jingpide9527的博客 1594

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

使用python将数据导出excel表格

  python可用于数据分析,有时候获得了数据需要导出以作其他作用。本文就介绍python导出excel表格的方法。   导出excel表格,python提供了两个库:xlwt,xlrd。本文只讨论下大致框架 import xlwt import xlrd #xlwt,xlrd是python将数据导入excel表格使用的库 wb = xlwt.Workbook() # 添加一个表 ws = wb.add_sheet('test') #添加数据使用.write函数(横坐标,纵坐标,内容)注意横纵坐标从0

gls_nuaa的博客 6万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python3使用openpyxl读写Excel文件

Python中常用的操作Excel的三方包有xlrd,xlwt和openpyxl等,xlrd支持读取.xls和.xlsx格式的Excel文件,只支持读取,不支持写入。xlwt只支持写入.xls格式的文件,不支持读取。 openpyxl不支持.xls格式,但是支持.xlsx格式的读取写入,并且支持写入公式等。 原始数据文件apis.xlsx内容: name method url da...

weixin_30539625的博客 2611

如何在python中使用openpyxl读取excel数据

如何在python中使用openpyxl读取excel数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

搞定过:百亿级数据、万级QPS、零宕机、AI工业化。 1487

Python 使用openpyxl处理Excel文件

python 使用openpyxl处理Excel文件,包括读取Excel文件内容、创建工作表、插入数据到工作表、设置单元格宽高、设置单元格对齐方式、设置单元格字体及颜色、合并单元格与取消合并、简单数学公式(如MAX()、MIN()、SUM()、AVERAGE())的使用以及创建简单图表(如柱状图、饼图)。......

梦里逆天的博客 3598

[Python进阶] Python操作Excel文件:openpyxl

在Python中,有好几个可以用来操作excel文件的第三方库,比如:xlsxwriter、xlrd、xlwt、xlutils、pyexcel_xls等,但是这些第三方库对excel支持或多或少都有点小问题。1、支持新建和新建后的写入,不支持对已有的excel文件的读取和修改。2、适合的场景:需要创建xlsx文件,不需要读,且数据量大;1、对xls文件的读写和其他很多全面的功能,但是对xlsx的excel支持很差。

知智 5049

python将数据导出到excel_使用python将大量数据导出到Excel中的小技巧分享

使用python将大量数据导出到Excel中的小技巧分享来源:中文源码网浏览: 次日期:2018年9月2日【下载文档:使用python将大量数据导出到Excel中的小技巧分享.txt】(友情提示:右键点上行txt文档名->目标另存为)使用python将大量数据导出到Excel中的小技巧分享 (1) 问题描述:为了更好地展示数据,Excel格式的数据...

weixin_28795975的博客 7746
上一篇: Java连接redis集群报错,connection refused 和Could not get a resource from the pool
下一篇: mac 下为python3.7 安装pyqt5
雕花の刺猬
博客等级 码龄10年 45粉丝 28原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值