类型错误:__init__() 获得意外的关键字参数“xfid”

问题描述 投票:0回答:3

我在尝试打开带有 xlsx 扩展名的文件时收到以下错误。

我尝试使用带有引擎的 pandas 作为 openpyxl、openpyxl 库,但错误仍然相同。 代码-

import pandas as pd 

filepath=r'C:\Users\smriti.rastogi\eclipseworkspace\demoproject\testfile1.xlsx'
readFile = pd.read_excel(filepath, sheet_name='Sheet1')
readFile.head()

如有任何帮助,我们将不胜感激。

  File ".\test.py", line 25, in <module>
    readFile = pd.read_excel(filepath, sheet_name='Sheet1')
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper 
    return func(*args, **kwargs)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_base.py", line 364, in read_excel
    io = ExcelFile(io, storage_options=storage_options, engine=engine)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_base.py", line 1233, in __init__   
    self._reader = self._engines[engine](self._io, storage_options=storage_options)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_openpyxl.py", line 522, in __init__
    super().__init__(filepath_or_buffer, storage_options=storage_options)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_base.py", line 420, in __init__
    self.book = self.load_workbook(self.handles.handle)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\pandas\io\excel\_openpyxl.py", line 533, in load_workbook
    return load_workbook(
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\reader\excel.py", line 317, in load_workbook    
    reader.read()
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\reader\excel.py", line 281, in read
    apply_stylesheet(self.archive, self.wb)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\styles\stylesheet.py", line 198, in apply_stylesheet
    stylesheet = Stylesheet.from_tree(node)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\styles\stylesheet.py", line 103, in from_tree       
    return super(Stylesheet, cls).from_tree(node)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree 
    obj = desc.expected_type.from_tree(el)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\descriptors\serialisable.py", line 87, in from_tree 
    obj = desc.expected_type.from_tree(el)
  File "C:\Users\smriti.rastogi\AppData\Local\Programs\Python\Python38-32\lib\site-packages\openpyxl\descriptors\serialisable.py", line 103, in from_tree
    return cls(**attrib)
TypeError: __init__() got an unexpected keyword argument 'xfid'
python pandas openpyxl
3个回答
1
投票

检查您的第一个单元格 (a,1) 是否为空。我注意到它需要有一个值来避免这个问题。


0
投票

原因是pandas(实际上是openpyxl)期望第一个单元格非空,因此它可以用作标题。

然后,为了避免这种情况,最好的解决方案是正确设置参数,以便解析器开始读取正确的单元格(https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html )

例如,假设我们有一个 xlsx 文件,其中第一行为空,然后它在某些单元格上具有稀疏元数据(例如标题和其他内容),并且实际数据从单元格 32 开始。此外,所有数据都有一个边距与 Word 文件中一样,A 列为空,并以 P 列结尾。读取文件的正确方法是:

df = pd.read_excel(xlsx_path, skiprows=31, usecols="B:P")


-1
投票

您文档中的一种样式可能已损坏。尝试将数据以纯文本形式复制/粘贴到另一张空白纸上。使用新文档重试。

这有效,什么是 xfid ,尚未找到任何与之相关的相关链接。如果您可以分享一些资源,将会很有帮助。

不幸的是,没有关于这个问题的资源。你必须根据回溯来阅读源代码才能找到错误。

© www.soinside.com 2019 - 2024. All rights reserved.