使用Pandas读取工作表状态错误的excel文件

d5vmydt9  于 2022-12-31  发布在  其他
关注(0)|答案(2)|浏览(413)

我用Pandas来读取这个excel文件,这个文件是通过一个自动化脚本从一个网站下载的。

import pandas as pd
df = pd.read_excel('CallHistory.xlsx')

但它显示以下错误:

ValueError                                Traceback (most recent call last)
c:\Users\minhviet\Box\Telio\vietpm\python\crawler\test_crawl_3.ipynb Cell 7' in <module>
      1 import pandas as pd
----> 2 df = pd.read_excel('CallHistory.xlsx')
      3 df

File c:\Users\minhviet\Anaconda3\lib\site-packages\pandas\util\_decorators.py:311, in deprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper(*args, **kwargs)
    305 if len(args) > num_allow_args:
    306     warnings.warn(
    307         msg.format(arguments=arguments),
    308         FutureWarning,
    309         stacklevel=stacklevel,
    310     )
--> 311 return func(*args, **kwargs)

File c:\Users\minhviet\Anaconda3\lib\site-packages\pandas\io\excel\_base.py:364, in read_excel(io, sheet_name, header, names, index_col, usecols, squeeze, dtype, engine, converters, true_values, false_values, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, parse_dates, date_parser, thousands, comment, skipfooter, convert_float, mangle_dupe_cols, storage_options)
    362 if not isinstance(io, ExcelFile):
    363     should_close = True
--> 364     io = ExcelFile(io, storage_options=storage_options, engine=engine)
    365 elif engine and engine != io.engine:
    366     raise ValueError(
    367         "Engine should not be specified when passing "
    368         "an ExcelFile - ExcelFile already has the engine set"
...
    127     if value not in self.values:
--> 128         raise ValueError(self.__doc__)
    129     super(Set, self).__set__(instance, value)

ValueError: Value must be one of {'visible', 'hidden', 'veryHidden'}

我搜索此错误并找到一些信息。似乎工作表的状态是错误的。https://github.com/exceljs/exceljs/issues/678
我试着在Excel中打开这个文件,编辑一些东西并保存,然后我就可以成功地从Pandas中读取它,但打开这个文件是自动化脚本的一部分,所以使用Excel打开和编辑是不可能的。
大家可以在这里下载文件,希望任何人都可以找到一种方法来处理这个文件的Python:https://app.box.com/s/8vds9zmhhxhn18p0ngodqeepfcgpzevv

a64a0gku

a64a0gku1#

我找到了解决方案。我尝试通过Pandasread_excel用不同的引擎(openpyxl和xlrd)读取这个文件。Openpyxl显示我以上错误(ValueError:值必须是{“visible”、“hidden”、“veryHidden”}之一),而xlrd显示另一个错误(KeyError:我搜索了一下,发现这个错误在xlrd 1.2.0版本之后但在2.0版本之前(不再支持xlsx文件)的提交中得到了修复,所以这个修复没有出现在xlrd的任何官方版本中。以下是关于这个修复的信息:https://github.com/python-excel/xlrd/commit/6ec98fc74796a6439c6dd64ed71597a3c50d4986#diff-74efe2926535c21edf8087564ce132fe
所以我安装了xlrd的这个修复提交。在安装这个版本之前,一定要删除其他版本的xlrd。

pip install git+https://github.com/python-excel/xlrd.git@6ec98fc74796a6439c6dd64ed71597a3c50d4986

然后我用引擎xlrd读了这个文件,它工作了。

import pandas as pd
df = pd.read_excel("C://Users/minhviet/Documents/CallHistory.xlsx", engine='xlrd')
pgccezyw

pgccezyw2#

import pandas as pd
df = pd.read_excel("C:/Users/minhviet/Documents/CallHistory.xlsx", engine='xlrd')

C:之后,仅使用一个/对我有效。

相关问题