首页 > 解决方案 > Openpyxl 错误的 max_row 和 max_cols

问题描述

我正在尝试解析这个特定的.xlsx 文件

问题是在选择任何工作表后,我无法对行进行交互。例如,这段常用代码:

wb = load_workbook('<file_path>', read_only=True)
sh = wb.worksheets[4]
for r in sheet.rows:
    print(r)

仅打印一行引用而不是 ~500。其他奇怪的东西:

wb.worksheets[4].max_row    # returns 1 instead of ~500
wb.worksheets[4].max_column # returns 1 instead of 3

到目前为止,此代码一直有效。解析这个特定文件的过程中似乎出现了问题。

关于它发生的原因(例如,错误的文件格式)以及如何防止这种情况的任何线索?

标签: pythonexcelopenpyxl

解决方案


  1. 我尝试在 Excel 中打开您的文件,我尝试保存它,但收到错误警告。我不得不将它保存为新副本。

  2. 然后我就可以用 openpyxl 打开它了。

  3. 请注意,您可以按名称引用工作表:

from openpyxl import load_workbook
wb = load_workbook("bad_data.xlsx")
ws = wb['casi_inizio_sintomi_sint'] #grab it by name
ws.max_row
>>>500
ws.min_row
>>>1

然后我尝试了你的 for 循环,效果很好。


推荐阅读