相关疑难解决方法(0)

openpyxl 无法读取严格的 Open XML 电子表格格式:用户警告:文件包含 Sheet1 的无效规范。这将被删除

我的一些用户(都使用 Mac)已将 Excel 上传到我的应用程序中,但应用程序拒绝了它,因为该文件似乎是空的。经过一些调试后,我确定该文件是以 Strict Open XML Spreedsheet 格式保存的,并且 openpyxl (2.6.0) 不会发出错误,而是向 stderr 打印警告。

要重现,请打开一个文件,添加几行并保存为 Strict Open XML Spreedsheet (*.xlsx) 格式。

import openpyxl
with open('excel_open_strict.xlsx', 'rb') as f:
    workbook = openpyxl.load_workbook(filename=f)
Run Code Online (Sandbox Code Playgroud)

这将打印以下警告,但不会引发任何异常:

UserWarning: File contains an invalid specification for Sheet1. This will be removed
Run Code Online (Sandbox Code Playgroud)

此外,工作簿似乎没有工作表:

assert workbook.get_sheet_names() == []
Run Code Online (Sandbox Code Playgroud)

我现在已经有 3 位 Mac 用户遇到了这个问题。Mac 似乎有时会默认使用这种 Strict Open XML Spreedsheet 格式。如果这是正常情况,那么 openpyxl 应该能够处理它。否则,如果 openpyxl 只抛出异常那就太好了。作为解决方法,我似乎可以执行以下操作:

import openpyxl
with open('excel_open_strict.xlsx', 'rb') as f:
    workbook = openpyxl.load_workbook(filename=f)

if not workbook.get_sheet_names():
    raise Exception("The Excel …
Run Code Online (Sandbox Code Playgroud)

python python-3.x openpyxl

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

openpyxl ×1

python ×1

python-3.x ×1