Python openpyxl无法读取严格的Open XML电子表格格式:UserWarning:文件包含Sheet1的无效规范。这将被删除
我的一些用户(都使用Mac)已经将Excel上传到我的应用程序中,然后我的应用程序拒绝了它,因为该文件似乎是空的。经过一些调试后,我确定该文件是以严格的Open XML Spreedsheet格式保存的,并且openpyxl(2.6.0)不会发出错误,而是向stderr打印一条警告 若要复制,请打开一个文件,添加几行,然后另存为严格的open XML Speedsheet(*.xlsx)格式 这将打印以下警告,但不会引发任何异常:Python openpyxl无法读取严格的Open XML电子表格格式:UserWarning:文件包含Sheet1的无效规范。这将被删除,python,python-3.x,openpyxl,Python,Python 3.x,Openpyxl,我的一些用户(都使用Mac)已经将Excel上传到我的应用程序中,然后我的应用程序拒绝了它,因为该文件似乎是空的。经过一些调试后,我确定该文件是以严格的Open XML Spreedsheet格式保存的,并且openpyxl(2.6.0)不会发出错误,而是向stderr打印一条警告 若要复制,请打开一个文件,添加几行,然后另存为严格的open XML Speedsheet(*.xlsx)格式 这将打印以下警告,但不会引发任何异常: UserWarning: File contains an in
UserWarning: File contains an invalid specification for Sheet1. This will be removed
此外,工作簿似乎没有工作表:
assert workbook.get_sheet_names() == []
我现在有三个Mac用户遇到过这个问题。看起来Mac有时会默认使用这种严格的开放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 was saved in an incorrect format")
使用R库openxlsx创建的XLSX文件也有类似的问题。来自一个简单python程序的示例错误消息,用于打开文件并从工作表中检索单个值: 警告(来自警告模块): 文件“C:\Python38\lib\site packages\openpyxl\reader\workbook.py”,第88行 警告(msg) UserWarning:文件包含无效的作物规范。这将被删除 我的第一个非常笨拙的解决方案:
wb=load\u工作簿(文件名为'CAF\u LTAR\u crops\u out\u 0.3.xlsx',只读=True)
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 was saved in an incorrect format")