openpyxl怎样按行和按列读取excel

冷漠man
发布: 2025-12-04 20:07:02
原创
421人浏览过
openpyxl按行或列读取Excel应使用1-based索引,优先调用iter_rows()和iter_cols()配合values_only=True高效获取值,避免直接遍历sheet.rows/columns或手动cell(i,j)。

openpyxl怎样按行和按列读取excel

openpyxl 按行或按列读取 Excel,核心在于理解它用的是“1-based索引”(行号列号从1开始),不是 Python 常见的 0-based。操作前先加载工作簿、选中工作表,再用合适的方法遍历——不是硬套 for 循环加 cell(i,j),而是优先用内置迭代器更安全高效。

按行读取:推荐用 iter_rows()

比手动 range + cell(i,j) 更简洁、更健壮,自动跳过空单元格(除非指定),也支持限定范围:

  • 读全部行:for row in sheet.iter_rows(): —— 默认从第1行第1列开始
  • 读指定范围:for row in sheet.iter_rows(min_row=2, max_row=5, min_col=1, max_col=3):
  • 每行返回的是 tuple of Cell 对象,取值要加 .value:[cell.value for cell in row]
  • 想直接转成列表嵌套(每行一个子列表):data = [list(row) for row in sheet.iter_rows(values_only=True)]values_only=True 是关键,省去反复写 .value)

按列读取:用 iter_cols()

逻辑和 iter_rows 类似,只是方向换成了列:

AIBox 一站式AI创作平台
AIBox 一站式AI创作平台

AIBox365一站式AI创作平台,支持ChatGPT、GPT4、Claue3、Gemini、Midjourney等国内外大模型

AIBox 一站式AI创作平台 224
查看详情 AIBox 一站式AI创作平台
  • 读第 A 列所有非空单元格:for col in sheet.iter_cols(min_col=1, max_col=1):
  • 读 B~D 列,第3到第10行:sheet.iter_cols(min_col=2, max_col=4, min_row=3, max_row=10)
  • 同样建议加 values_only=True 直接得值:[cell.value for cell in col] 或整列打包:list(sheet.iter_cols(min_col=1, values_only=True))[0](取第1列值列表)

其他实用读取方式

不总需要循环,有些场景更简单:

  • 读某一行(比如第3行):row3 = list(sheet[3]) → 返回第3行所有 Cell 对象;加 values_only=True 就是值列表
  • 读某一列(比如 A 列):col_a = list(sheet['A'])sheet['A:C'] 可读多列
  • 读指定区域(如 A1:C5):cells = sheet['A1:C5'] → 返回二维 tuple,cells[0][0].value 是 A1 值

注意几个易错点

  • 不要用 sheet.rows / sheet.columns 直接遍历:它们是生成器,遍历一次就空了,且行为不稳定;坚持用 iter_rows()iter_cols()
  • 空单元格默认返回 None,不是空字符串,做 str 操作前建议判空
  • 如果文件很大,考虑启用 只读模式load_workbook(filename, read_only=True)内存占用低,但只能读不能改
  • 读取前确认工作表存在,避免 KeyErrorif 'Sheet1' in wb.sheetnames:

基本上就这些。用对 iter_rows 和 iter_cols,再配上 values_only=True,读取就又快又干净。

以上就是openpyxl怎样按行和按列读取excel的详细内容,更多请关注php中文网其它相关文章!

WPS零基础入门到精通全套教程!
WPS零基础入门到精通全套教程!

全网最新最细最实用WPS零基础入门到精通全套教程!带你真正掌握WPS办公! 内含Excel基础操作、函数设计、数据透视表等

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号