如何使用openpyxl打开不带.xlsx扩展名的有效XLSX文件?
报错原因
load_workbook接收字符串格式的文件路径时,会先提取路径的扩展名做白名单校验,仅当扩展名为.xlsx、.xlsm、.xltx、.xltm四类时才会继续读取文件内容,不会主动探测文件的真实格式。因此只要路径不带对应后缀,哪怕文件内容是完全合法的XLSX格式,也会直接抛出InvalidFileException。
解决方法
无需重命名原文件,也不需要额外复制带后缀的副本,直接以二进制只读模式打开目标文件,将文件对象传入load_workbook即可绕过后缀名校验逻辑,openpyxl会直接解析文件内容完成加载:
from openpyxl import load_workbook # 必须使用二进制只读模式rb打开,xlsx本质是zip压缩的二进制格式,文本模式读取会出错 with open("my_excel_file", "rb") as f: wb_input = load_workbook(f)
该方法对所有openpyxl支持的格式通用,只要文件本身内容合法,无论是否带后缀、后缀名是什么都可正常读取。
内容的提问来源于stack exchange,提问作者Bart Friederichs
相关产品推荐
相关产品推荐

