python - 如何使用 OpenPyXL 遍历 Excel 表中的所有行?
解决方案
我想出了以下功能来做到这一点。
from typing import Any, Dict, Generator
from openpyxl import load_workbook
from openpyxl.worksheet.table import Table
from openpyxl.worksheet.worksheet import Worksheet
from openpyxl.utils import rows_from_range
TableRow = Dict[str, Any]
def iter_table_rows(ws:Worksheet, tb:Table) -> Generator[TableRow, None, None]:
"""Iterate over rows from a table with headers (row as dictionary)"""
def get_row_values(row_cell_ref):
return [ws[c].value for c in row_cell_ref]
iter_rows = rows_from_range(tb.ref)
headers = get_row_values(next(iter_rows))
for row_cells in iter_rows:
yield {h:v for h,v in zip(headers, get_row_values(row_cells))}
wb = load_workbook("my_file.xlsx")
ws = wb.active
tb = ws.tables["MyTable"]
for row in iter_table_rows(ws, tb):
print(row)
推荐阅读
- python-3.x - 将一个字符串拆分为多个列表
- windows - 即使在管理员帐户下,PowerShell USMT 错误 26 也无法访问 Windows 文件
- python - Python 3 - 嵌套循环
- python - 如何使用python制作行星的轨道
- python - 在python中删除变量后如何释放内存?
- ios - Xcode 10.2.1 不支持 ios 12.3.1 用于部署/测试目的?
- kotlin - 对 kotlin 中的小型私有函数使用 inline 关键字?
- ios - UIView 功能错误
- python - Ansible + Ubuntu 18.04 + MySQL =“需要 PyMySQL(Python 2.7 和 Python 3.X)或 MySQL-python(Python 2.X)模块。”
- windows - 网络:无法解析 Kubernetes 参数:pod 没有标签 vpc.amazonaws.com/PrivateIPv4Address