python - 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
到目前为止,此代码一直有效。解析这个特定文件的过程中似乎出现了问题。
关于它发生的原因(例如,错误的文件格式)以及如何防止这种情况的任何线索?
解决方案
我尝试在 Excel 中打开您的文件,我尝试保存它,但收到错误警告。我不得不将它保存为新副本。
然后我就可以用 openpyxl 打开它了。
请注意,您可以按名称引用工作表:
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 循环,效果很好。
推荐阅读
- javascript - 这里公共交通路线到车站的最大距离不起作用
- javascript - 为什么 React-grid-layout 的位置没有改变?
- lua - 为什么我的 logitech g lua 脚本出现语法错误?
- css - 如何在 VScode 中编写 CSS 注释 emmet?
- react-native - ReactNativeJS: TypeError: undefined is not an object (评估 'u.Children.toArray(n.children).filter(function(n){return null!=n})[t].props')
- python - 在 Pygame 中删除对象?
- javascript - 如何在物料表中验证日期?
- mysql - 是否可以直接连接到mysql数据库而无需rest api?
- flask - flask-CKEDITOR 发回 html 而不是纯文本
- python - 如何将命令行参数传递给仪表测试?