讲师中心 微信公众号
AI工具推荐 视频效率加速

Python Excel 大文件读写的 openpyxl 优化

落宇小哥_9032

落宇小哥_9032

发布时间:2026-02-21 15:51:10

|

336人浏览过

|

来源于php中文网

原创

openpyxl读大Excel卡死因默认全量加载内存,应启用read_only=True流式解析并避免max_row等全表扫描操作;写入慢因逐行append开销大,需批量写入或write_only=True模式。

python excel 大文件读写的 openpyxl 优化

openpyxl 读大 Excel 文件为什么卡死?

因为 openpyxl 默认加载全部单元格到内存,哪怕你只读一列,它也会解析整个 .xlsx 文件的 XML 结构。10MB 的文件可能吃掉 500MB 内存,100MB 文件直接触发 MemoryError 或长时间无响应。

常见错误现象:openpyxl.load_workbook() 卡住几十秒、进程内存飙升、报错 xml.etree.ElementTree.ParseError: out of memory。

  • 用 read_only=True 模式打开——这是最有效的起点,底层改用流式 XML 解析,内存占用降为原来的 1/10 左右
  • 避免调用 ws.iter_rows() 后再转成 list(),会一次性拉取全部行;应直接 for 循环迭代
  • 不要访问 ws.max_row 或 ws.max_column,它们在 read_only=True 下会强制扫描全表,拖慢速度

怎么只读某几列又不爆内存?

openpyxl 本身不支持“按列名跳读”,但你可以结合 read_only=True + 列索引过滤,避开加载无关字段。

使用场景:日志表有 50 列,你只要 "user_id" 和 "created_at",其他列全是干扰项。

立即学习“Python免费学习笔记(深入)”;

办公Excel数据整理排版技巧|豆信信息技术
办公Excel数据整理排版技巧|豆信信息技术

技能简介:实用Excel表格整理排版技巧,解决数据杂乱、格式混乱问题,提升办公效率。 执行提示词:输出职场Excel数据整理、表格排版、格式统一的实用技巧,解决表格杂乱、数据混乱、排版不规范问题,提升日常办公效率。 本工具由豆信信息技术整理优化,轻量化实用模板,免费合规使用。

下载
  • 先用 next(ws.iter_rows(min_row=1, max_row=1)) 读首行,拿到列名和对应索引(比如 "user_id" 在第 2 列 → index=1)
  • 后续遍历数据行时,只取你需要的索引位置,例如 row[1].value 和 row[4].value
  • 别用 row["user_id"].value 这种写法——read_only 模式下 row 是 tuple,不支持键访问

openpyxl 写大文件慢得离谱?别用 active sheet append

逐行 ws.append() 看似自然,但每调用一次都会触发样式、行列元数据的内部重建,10 万行可能耗时几分钟。

性能影响:append 模式下写入速度随行数增长呈次线性下降,而批量写入可稳定在 1–3 万行/秒(取决于硬件)。

  • 把数据组织成二维 list(如 data = [[a,b,c], [d,e,f]]),然后用 ws.append(data) 一次写入整批
  • 如果必须逐条生成,攒够 1000 行再 ws.append() 一次,比单行 append 快 5–8 倍
  • 写入前关掉自动计算和样式:设 wb = Workbook(write_only=True),这会禁用所有非必要对象,大幅提速并省内存

write_only=True 模式下不能用哪些功能?

这个模式本质是“只写流”,牺牲了灵活性换性能和内存控制。一旦启用,很多你以为理所当然的操作会报错或失效。

容易踩的坑:开了 write_only=True 还想设置单元格字体、边框、合并单元格,或者想回头修改已写入的行。

  • ws.cell() 不可用,只能用 ws.append() 或 ws.append(row)
  • 不能读取已写入的内容(没有 ws[1][0].value 这种操作)
  • 不能设置单个单元格的 font、border、alignment;样式只能通过 NamedStyle 预定义并应用到整列(且有限制)
  • 保存后不能再次打开编辑——write_only=True 的工作簿只能写一次,保存即终结

复杂点在于:没有银弹。如果你既要高速写入,又要精细样式控制,就得拆成两步——先用 write_only=True 快速生成数据表,再用普通模式打开、加样式、另存。这个切换过程本身就有开销,得权衡。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

4744

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

6157

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2522

2024.11.28

append用法
append用法

append是一个常用的命令行工具,用于将一个文件的内容追加到另一个文件的末尾。想了解更多append用法相关内容,可以阅读本专题下面的文章。

598

2023.10.25

python中append的用法
python中append的用法

在Python中,append()是列表对象的一个方法,用于向列表末尾添加一个元素。想了解更多append的更多内容,可以阅读本专题下面的文章。

1476

2023.11.14

python中append的含义
python中append的含义

本专题整合了python中append的相关内容,阅读专题下面的文章了解更多详细内容。

2744

2025.09.12

html边框设置教程
html边框设置教程

本教程将带你全面掌握HTML/CSS边框设置,从基础的border属性讲起,涵盖所有边框样式、圆角设置及高级技巧,帮助你快速上手实现各种边框效果。

2733

2025.09.02

excel对比两列数据异同
excel对比两列数据异同

Excel作为数据的小型载体,在日常工作中经常会遇到需要核对两列数据的情况,本专题为大家提供excel对比两列数据异同相关的文章,大家可以免费体验。

5601

2023.07.25

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

20

2026.10.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Excel 教程
Excel 教程

共162课时 | 44.8万人学习

成为PHP架构师-自制PHP框架
成为PHP架构师-自制PHP框架

共28课时 | 3.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn