为什么我的openpyxl加载只拉动工作表中的一个单元格

时间:2016-10-06 21:51:29

标签: python excel openpyxl

我有openpyxl意图读取XLSX文档中的行。

但由于某种原因,它只是读取单元格A1中的值,然后完成。

我错过了什么?

from openpyxl import load_workbook

Dutch = load_workbook(filename='languages/READY-Language Translation-- August (SOS) Dutch_dut_Compared_Results.xlsx', read_only=True)
Dws = Dutch.get_sheet_by_name(name='Ouput')

for row in Dws.iter_rows():
    for cell in row:
        print(cell.value)

2 个答案:

答案 0 :(得分:1)

如果您以阅读模式加载工作簿,并且 openpyxl 没有按预期读取工作表,例如 A1:A1,您可以使用 ws.reset_dimensions() 重置最大行和列。

Documentaion here

示例:

from openpyxl import load_workbook

wb = load_workbook(filename='languages/READY-Language Translation-- August (SOS) Dutch_dut_Compared_Results.xlsx', read_only=True)
ws = wb['Ouput']
ws.reset_dimensions()

for row in ws.rows:
    for cell in row:
        print(cell.value)

答案 1 :(得分:0)

只读模式在很大程度上取决于您正在阅读的文件提供的元数据,尤其是"维度"。您可以查看ws.max_rowws.max_col的内容来查看此内容。如果这些与您的预期不同,则文件中的元数据不正确。您可以强制openpyxl使用ws.calculate_dimensions()重新计算这些值,但这是不可取的,因为它会强制openpyxl读取整个工作表。更好的是简单地重置基础值,以便openpyxl知道工作表是未分级的。