Openpyxl 给出不一致的错误信息

Openpyxl gives an inconsistent error message

我有以下功能,可以使用 openpyxl 库从 excel 工作簿中读取:

import openpyxl

def read_excel(path):
    excel_workbook = openpyxl.load_workbook(path, read_only = True)
    # other logic
    return None

我可以这样调用该函数:

read_excel("C:/Users/anon/Desktop/Current Projects/Test Files/Test.xlsm ")

它 returns 这个错误:

openpyxl.utils.exceptions.InvalidFileException: openpyxl does not support .xlsm  file
format, please check you can open it with Excel first. Supported formats are: .xlsx,.xlsm,
.xltx,.xltm

那个错误信息让我很困惑。它告诉我它不支持 .xlsm 文件格式,它支持 .xlsm 文件格式。该文件在 excel 中打开得很好,为什么 openpyxl 不能读取我的 Excel 文件?

.xlsm之后的错误信息中多了一个空白字符。删除调用函数的路径字符串末尾的空白字符,函数运行无误。

read_excel("C:/Users/anon/Desktop/Current Projects/Test Files/Test.xlsm")

同样的问题今天也很困扰我,最后我将openpyxl从2.3.2更新到2.3.5,这个问题就消失了。

虽然我使用的是 Anaconda,但有时使用 pip 更新包可能是个不错的尝试。

我正在使用 PyQt5 并且遇到了同样的问题。我发现添加 _filter 解决了这个问题。整行内容为:

fileName, _filter = QtWidgets.QFileDialog.getOpenFileName(None, "Lists", "", "xlsx files *.xlsx")