使用pandas读取xlsx文件时遇TypeError: __init__() got unexpected keyword argument 'xxid'
解决读取xlsx时出现
TypeError: __init__() got an unexpected keyword argument 'xxid'的问题 问题原因
这个错误是因为你使用的openpyxl版本不兼容文件中的xxid样式属性——这类文件通常由WPS或其他非微软Excel的办公工具生成。手动用Excel保存后,文件会自动移除该属性,所以能正常读取,但批量处理需要自动化方案。
解决方案
方案1:升级openpyxl到最新版本
这是最直接的解决方式,新版本openpyxl已修复对xxid属性的兼容问题:
pip install --upgrade openpyxl
升级后修正原代码的语法错误(import pandas pd应为import pandas as pd),重新运行即可:
import pandas as pd readFile = pd.read_excel("test.xlsx")
方案2:批量自动修复文件(若升级无效)
如果升级后仍存在问题,可以用Python批量模拟Excel保存操作:
Windows环境
import os import win32com.client as win32 def repair_xlsx(file_path): excel = win32.gencache.EnsureDispatch('Excel.Application') excel.Visible = False try: wb = excel.Workbooks.Open(file_path) wb.Save() wb.Close() except Exception as e: print(f"处理文件{file_path}出错: {e}") finally: excel.Quit() # 批量处理目标文件夹下所有xlsx文件 folder_path = "你的文件夹路径" for filename in os.listdir(folder_path): if filename.endswith(".xlsx"): file_path = os.path.join(folder_path, filename) repair_xlsx(file_path)
Mac环境
先安装依赖库:
pip install appscript
再运行批量处理代码:
import os from appscript import app, k def repair_xlsx_mac(file_path): excel = app('Microsoft Excel') try: wb = excel.open(file_path) wb.save() wb.close() except Exception as e: print(f"处理文件{file_path}出错: {e}") folder_path = "你的文件夹路径" for filename in os.listdir(folder_path): if filename.endswith(".xlsx"): file_path = os.path.join(folder_path, filename) repair_xlsx_mac(file_path)
内容的提问来源于stack exchange,提问作者samlexxy
相关产品推荐
相关产品推荐

