无法加载xlsx文件

时间:2014-05-12 07:51:39

标签: python openpyxl

我正在尝试使用python openpyxl读取附加的xlsx(Click here to download )文件。但是,无法加载工作簿。这是我尝试在python中打开xlsx文件 -

>>> from openpyxl import load_workbook
>>> workbook = load_workbook(filename = "test.xlsx")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\openpyxl\reader\excel.py", line 136, in load_workbook
    _load_workbook(wb, archive, filename, use_iterators, keep_vba)
  File "C:\Python27\lib\site-packages\openpyxl\reader\excel.py", line 198, in _load_workbook
    keep_vba=keep_vba)
  File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 332, in read_worksheet
    fast_parse(ws, xml_source, string_table, style_table, color_index)
  File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 320, in fast_parse
    parser.parse()
  File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 137, in parse
    dispatcher[tag_name](element)
  File "C:\Python27\lib\site-packages\openpyxl\reader\worksheet.py", line 176, in parse_merge
    self.ws.merge_cells(mergeCell.get('ref'))
  File "C:\Python27\lib\site-packages\openpyxl\worksheet.py", line 815, in merge_cells
    raise InsufficientCoordinatesException(msg)
openpyxl.shared.exc.InsufficientCoordinatesException: Range must be a cell range (e.g. A1:E1)

6 个答案:

答案 0 :(得分:3)

您的.xlsx文件似乎已损坏或永久损坏。原因可能很多。其中之一可能是您可能已将文件的扩展名重命名为.xlsx,这会使文件无效。要确认此beahviour,请尝试在Microsoft Excel中打开此文件。

我尝试通过openpyxlxlrdpandas阅读该文件,但这些文件都没有效果。

>>> import xlrd
>>> xlrd.open_workbook('test.xlsx')
XLRDError: Unsupported format, or corrupt file: Expected BOF record; found '<html> <'


>>> from openpyxl import load_workbook
>>> workbook = load_workbook(filename = "test.xlsx")
InvalidFileException: File is not a zip file

>>> import pandas 
>>> pandas.ExcelFile('test.xlsx')
InvalidFileException: File is not a zip file

答案 1 :(得分:1)

OK Guys ..我已经向openpyxl开发人员报告了这个错误,他们已经提供了一个快速解决方案。 Here是完整的主题。

答案 2 :(得分:1)

我遇到了这个问题,尝试打开以* .xlsx结尾的目录中的每个文件。 我后来发现导致错误的文件被命名为〜$ filename.xlsx。我猜微软表示当前打开一个文件是通过创建一个同名的文件,前面加上〜$。一旦我关闭文件,一切都按预期工作。

答案 3 :(得分:0)

我喜欢openpyxl并将其用于创建xlsx文档。它可能是错误或缺少与特定文档中发生的excel功能的兼容性。我会将其报告给openpyxl社区

答案 4 :(得分:0)

问题在于,一些合并的单元实际上是与自己合并的。 openpyxl期望合并的单元格引用始终是一系列单元格。 2.0分支中添加了忽略无意义合并的问题的修复程序。

答案 5 :(得分:-1)

我从未尝试openpyxl,但我使用xlrd来读取excel文件(.xls和.xlsx)。它的工作很棒。

请参阅http://www.python-excel.org/

上的示例和文档