读取工作表名为None的xlsx文件。熊猫xlrd

时间:2018-07-09 08:15:35

标签: python excel pandas xlrd

我有一堆xlsx文件,它们的工作表名为None(空字符串)
当我尝试使用pandas读取文件时,xlrd引发了list index out of range错误。

Traceback (most recent call last):
  File "/usr/local/bin/runxlrd.py", line 332, in main
    ragged_rows=options.ragged_rows,
  File "/Library/Python/2.7/site-packages/xlrd/__init__.py", line 416, in open_workbook
    ragged_rows=ragged_rows,
  File "/Library/Python/2.7/site-packages/xlrd/xlsx.py", line 791, in open_workbook_2007_xml
    x12sheet.process_stream(zflo, heading)
  File "/Library/Python/2.7/site-packages/xlrd/xlsx.py", line 528, in own_process_stream
    self_do_row(elem)
  File "/Library/Python/2.7/site-packages/xlrd/xlsx.py", line 667, in do_row
    value = self.sst[int(tvalue)]
IndexError: list index out of range

我在xrld的github中发现了我认为与this有关的问题。
如果我更改工作表的名称,则pandas将成功读取文件。

我不能以共享文件为例(隐私问题),当我尝试创建工作表名称为None的演示文件时,Excel引发了无效名称错误。

软件包版本。

pkg_resources.get_distribution("xlrd").version
Out[3]: '1.1.0'
pd.__version__
Out[4]: '0.23.0' 

是否可以使用可更改工作表名称的熊猫或脚本(任何语言)读取此文件?

1 个答案:

答案 0 :(得分:0)

这对我来说适用于Python 2.7,pandas 0.23.3和xlrd 1.1.0

Excel file with sheet named None

>>> import xlrd
>>> import pandas
>>> xlrd_workbook = xlrd.open_workbook("test.xlsx")
>>> pandas.read_excel(xlrd_workbook, engine='xlrd')
     A    B    C
0  123  456  789