无法加载xlsx文件

1 投票
6 回答
10523 浏览
提问于 2025-04-18 06:16

我正在尝试用Python的openpyxl库来读取一个附加的xlsx文件(点击这里下载)。但是,工作簿无法加载。下面是我尝试在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

好的,大家好。我已经把这个问题报告给了openpyxl的开发者,他们很快就给出了一个解决办法。这里是完整的讨论内容。

0

我喜欢用 openpyxl 这个工具来创建 xlsx 格式的文档。你遇到的问题可能是一个错误,或者是这个工具和你特定文档中的某个 Excel 功能不兼容。我建议你把这个问题反馈给 openpyxl 的社区。

1

我在尝试打开一个文件夹里所有以 *.xlsx 结尾的文件时遇到了问题。后来我发现导致错误的文件名是 ~$filename.xlsx。我猜这是微软的一个标记,表示这个文件当前正在被打开,所以它会创建一个同名的文件,但前面加上 ~$。当我关闭那个文件后,一切就正常了。

4

看起来你的 .xlsx 文件损坏了或者永久性地坏掉了。 造成这种情况的原因可能有很多。其中一个原因可能是你把文件的扩展名改成了 .xlsx,这样会导致文件失效。要确认这个问题,请尝试在 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
0

问题在于,有些合并的单元格实际上是和自己合并在一起的。openpyxl这个库期望合并的单元格引用总是指向一片单元格区域。为了修复这个问题,已经在2.0版本中添加了一个忽略无意义合并的功能。

撰写回答