最近有一个往Excel文件中不同的工作簿写入大量数据的需求,如下图所示,有三个工作簿,每个工作簿中的数据量不同,向一个工作簿中写入数据时需要将上一次写入的数据清空,且其它两个工作簿的数据不能清空。

网上大部分的教程都是一条一条的往里面写入,这种效率太低,而且耗时太长。或者就是一次往一个工作簿写入数据时,会将之前的全部数据覆盖,也不太符合要求。
下面是自己的实现方式
我使用的是openpyxl和pandas模块相结合使用的。在写入数据时,首先会将写入的数据长度与Excel表中某一个工作簿中的数据长度进行对比,若写入数据的长度小于Excel表中某一个工作簿中的数据长度,则将该工作簿进行移除并重新创建,详细代码如下。

if len(data) < int(df_rows):Title = [u'模拟数据', u'平均值', u'方差', u'散斑对比度']book = load_workbook(AllPath + r"\Simulate.xlsx")# 获取Excel表格中的所有sheetsheets = book.worksheetsfor i in range(len(sheets)):strV = ''valueIndex = str(sheets[i])print(f'valueIndex={valueIndex}')for j in range(12, len(valueIndex) - 2):strV += valueIndex[j]print(f'strV={strV}')if strV == SHEET:Sheet = book[SHEET]book.remove(Sheet)Coefficient = book.create_sheet(index=0, title=SHEET)Coefficient.append(Title)book.save(AllPath + r"\Simulate.xlsx")book.close()

在判断完数据后,将几十万条数据一次全部写入Excel中的某一个工作簿,具体代码如下

df = pd.DataFrame(data)
book = load_workbook(AllPath + r"\Simulate.xlsx")
with pd.ExcelWriter(AllPath + r"\Simulate.xlsx") as writer:writer.book = bookwriter.sheets = dict((ws.title, ws) for ws in book.worksheets)df.to_excel(writer, sheet_name=SHEET, startrow=1, index=False, header=False)

最后就能实现上述的需求了。
源代码链接

Python中,一次性往Excel写入几十万条数据相关推荐

  1. python对excel某一列去重-「总结篇」Python中所有的Excel操作技巧

    原标题:「总结篇」Python中所有的Excel操作技巧 Python对于Excel的操作是多种多样的,掌握了相关用法就可以随心所欲的操作数据了! 操作xls文件 xlrd(读操作): import ...

  2. 解决python中csv文件中文写入问题

    解决python中csv文件中文写入问题 参考文章: (1)解决python中csv文件中文写入问题 (2)https://www.cnblogs.com/harrymore/p/10063775.h ...

  3. Python中xlrd操作excel单元格

    学习目标 Python中xlrd操作excel单元格 学习内容 1.获取工作表 sheet=data.sheet_by_index(0) 2.返回单元格对象 sheet.cell(1,2) #返回第二 ...

  4. Python中使用sentinelsat包自动下载Sentinel系列数据

    Python中使用sentinelsat包自动下载Sentinel系列数据 前言 普通下载 使用工具批量下载Sentinel 数据 使用SNAP批量下载 第三方软件或网站批量下载 Sentinel-1 ...

  5. python中使用zip函数基于两个列表数据list创建字典dict数据(Create a dictionary by passing the output of zip to dict)

    python中使用zip函数基于两个列表数据list创建字典dict数据(Create a dictionary by passing the output of zip to dict) 目录

  6. mysql十万条数据_2秒内向数据库中插入十万条数据?

    怎么向数据库中快速插入十万条数据呢,当然得需要对比才能看到效果,今天给大家亲身测了两种方法对比,差别25倍左右 1,数据库用sql server 2008 r2,表结构非常简单,四个字段,建数据表的s ...

  7. java list 前100个_实现java 中 list集合中有几十万条数据,每100条为一组取出

    解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...

  8. 在vue中如何高性能渲染十万条数据(虚拟列表)并且增加个搜索框可以搜索到这些数据

    在工作中,有时会遇到需要一些不能使用分页方式来加载列表数据的业务情况,对于此,我们称这种列表叫做长列表.比如,在一些外汇交易系统中,前端会实时的展示用户的持仓情况(收益.亏损.手数等),此时对于用户的 ...

  9. 2021-09-08 使用easyexcel解析几十万条数据时报错

    使用easyexcel上传几万条数据正常,解析几十万条数据时报了如下错误: com.alibaba.excel.exception.ExcelAnalysisException: java.lang. ...

最新文章

  1. 微信小程序画布圆形进度条demo
  2. SQLite第三课 源码编译错误以及解决
  3. word文档基本编辑功能_【读者培训】Word在编辑长文档时的基本应用
  4. springboot后台弹出前台对话框_基于springboot的精品小说网站
  5. css实现提示信息,单纯使用CSS实现动态提示信息
  6. python客户端和服务端实验_python实现socket客户端和服务端简单示例
  7. IOS笔记本----读写.plist文件
  8. WordPress菜单“显示选项”无法显示的解决办法
  9. 样本量过少时,如何科学衡量喜好程度?
  10. false true求或_如何依据【关键字】求【数量和】
  11. DPDK数据流过滤规则例程解析—— 网卡流处理功能窥探
  12. svn指定版本代码对比的方法
  13. malloc函数java_malloc函数详解及用法举例
  14. react class的写法
  15. Codeforces1575 D. Divisible by Twenty-Five(dp)
  16. 华为OD机试 - 日志首次上报最多积分
  17. 论文写作——如何作图(visio/ppt+Adobe Acrobat Pro)
  18. jQuery入门(1)
  19. Windows下隐藏文件夹
  20. E.03.09 China Tried to Slow Divorces by Making Couples Wait. Instead, They Rushed.

热门文章

  1. 数据结构第二版(朱昌杰版)习题六
  2. 【电力电子技术】单相全波可控与单相桥式半控整流电路
  3. 内网计算机如何在线查找mac地址,怎么查自己电脑的ip 和mac地址 局域网ip地址怎么查?...
  4. 架构师的软实力之架构透视
  5. android 2.2下载地址,Windows下载android2.2完整源码
  6. Source Insight 4.0打开一会就闪退 解决方法
  7. 利用C语言实现文件的读写操作
  8. linux中文语言包下载地址,centos中文语言包-官方版-centos中文语言包fonts-chinese-3.02-12.el5.noarch.rpm-独木成林...
  9. 传智168期 SSH网上商城笔记day41~day45(2017年4月15日15:57:30)
  10. 【译文】抽象漏洞法则