当前位置:
首页 > Python基础教程 >
-
Python 基于 xlsxwriter 实现百万数据导出 excel
excel 中的每个 sheet 最多只能保存 1048576 行数据
# 获取项目的根路径 rootPath
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = curPath[:curPath.find(你的项目名称 + "/") + len(
你的项目名称 + "/")]
# 临时文件
local_file_path = os.path.join(rootPath, "temp.xlsx")
# 检查并删除现有的临时文件
if os.path.exists(local_file_path):
os.remove(local_file_path)
sheet_number = 1
sheet_name_format = "Sheet_{}"
# 数据量大,导出的数据又包含url的话,会疯狂报警告,大家用不到可以删掉
workbook = xlsxwriter.Workbook(local_file_path, options={'strings_to_urls': False})
table = workbook.add_worksheet(sheet_name_format.format(sheet_number))
# sheet 数据总条数
page_total = 0
# 要写的行
row_number = 1
# 分批导出,每次 100000 条数据
default_limit = 100000
# 分批导出,第 1 页开始
page_number = 1
while True:
# 分批获取数据
data_list = get_data_list(page_number, default_limit) # 你的数据
if len(data_list) == 0:
break
# sheet总条数,0代表第一次写入数据
if page_total == 0:
# 标题
header = [你的标题]
table.write_row(0, 0, header)
# todo 因为我把每个 sheet 控制在了 100万条,就切换下一个 sheet 了。
# todo 如果各位要是玩极限别忘了这里 page_total + 1
for item in data_list:
table.write_row(row_number, 0, list(item.values()))
row_number = row_number + 1
page_total = page_total + len(data_list)
# 自动切换sheet
if page_total >= 1000000:
# 换下一个sheet
sheet_number = sheet_number + 1
table = workbook.add_worksheet(sheet_name_format.format(sheet_number))
# 初始化
page_total = 0
row_number = 1
page_number = page_number + 1
# 关闭
workbook.close()
来源:https://www.cnblogs.com/yistack/p/18104628
栏目列表
最新更新
求1000阶乘的结果末尾有多少个0
详解MyBatis延迟加载是如何实现的
IDEA 控制台中文乱码4种解决方案
SpringBoot中版本兼容性处理的实现示例
Spring的IOC解决程序耦合的实现
详解Spring多数据源如何切换
Java报错:UnsupportedOperationException in Col
使用Spring Batch实现批处理任务的详细教程
java中怎么将多个音频文件拼接合成一个
SpringBoot整合ES多个精确值查询 terms功能实
SQL Server 中的数据类型隐式转换问题
SQL Server中T-SQL 数据类型转换详解
sqlserver 数据类型转换小实验
SQL Server数据类型转换方法
SQL Server 2017无法连接到服务器的问题解决
SQLServer地址搜索性能优化
Sql Server查询性能优化之不可小觑的书签查
SQL Server数据库的高性能优化经验总结
SQL SERVER性能优化综述(很好的总结,不要错
开启SQLSERVER数据库缓存依赖优化网站性能
uniapp/H5 获取手机桌面壁纸 (静态壁纸)
[前端] DNS解析与优化
为什么在js中需要添加addEventListener()?
JS模块化系统
js通过Object.defineProperty() 定义和控制对象
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比