使用openpyxl简便读取Excel工作表全部内容的方法咨询
解决方案
openpyxl 的 Worksheet 对象内置了values属性,可直接迭代获取工作表所有行的单元格值,无需手动遍历每个单元格,完全满足单元测试的快速取值需求。
使用示例
- 基础读取代码
# filename为目标Excel文件路径 wb = load_workbook(filename) sheet = wb.active # 直接读取全部内容,转换为列表后每一项对应一行,行内元素为对应单元格的值,空单元格为None sheet_content = list(sheet.values) wb.close()
- 单元测试断言示例
拿到的sheet_content是嵌套的元组结构,可直接和预期结果做全等判断:
# 预期结果示例,按实际场景修改即可 expected_content = [ ("列1", "列2", "列3"), ("测试值1", 100, None), ("测试值2", 200, "备注") ] assert sheet_content == expected_content
常见场景适配
- 若需要读取公式计算后的结果而非公式本身,加载工作簿时添加
data_only=True参数:wb = load_workbook(filename, data_only=True) - 若需要过滤全为空的行,可对结果做简单筛选:
sheet_content = [row for row in sheet.values if any(cell is not None for cell in row)]
额外说明
你之前调用sheet.read()拿到工作表名称信息,是因为openpyxl的Worksheet类本身没有read方法,调用不存在的方法时触发了对象的默认字符串序列化规则,才输出了类名+工作表名的内容。
内容的提问来源于stack exchange,提问作者zsh_18
相关产品推荐
相关产品推荐

