webentwicklung-frage-antwort-db.com.de

python xlrd nicht unterstütztes Format oder beschädigte Datei.

Mein Code: 

import xlrd
wb = xlrd.open_workbook("Z:\\Data\\Locates\\3.8 locates.xls")
sh = wb.sheet_by_index(0)
print sh.cell(0,0).value

Der Fehler: 

Traceback (most recent call last):
File "Z:\Wilson\tradedStockStatus.py", line 18, in <module>
wb = xlrd.open_workbook("Z:\\Data\\Locates\\3.8 locates.xls")
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 429, in open_workbook
biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1545, in getbof
bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
File "C:\Python27\lib\site-packages\xlrd\__init__.py", line 1539, in bof_error
raise XLRDError('Unsupported format, or corrupt file: ' + msg)
xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record;
found '<table r'"

Die Datei scheint nicht beschädigt zu sein oder ein anderes Format zu haben. .__ Alles, was dabei hilft, die Ursache des Problems zu finden, wäre großartig. 

21
wDroter

Du sagst: 

Die Datei scheint nicht beschädigt zu sein oder ein anderes Format zu haben.

Wie aus der Fehlermeldung hervorgeht, sind die ersten 8 Bytes der Datei jedoch '<table r' .... Dies ist definitiv kein Excel .xls-Format. Öffnen Sie es mit einem Texteditor (z. B. Notepad), der die (falsche) .xls-Erweiterung nicht zur Kenntnis nimmt, und überzeugen Sie sich selbst.

27
John Machin

Versuchen Sie es mit Pandas zu öffnen:

import pandas as pd
data = pd.read_html('filename.xls')

Oder probieren Sie einen anderen HTML-Python-Parser.

Das ist keine richtige Excel-Datei, sondern eine mit Excel lesbare HTML-Datei.

13
foebu

Ich hatte ein ähnliches Problem und es war mit der Version verbunden. Überprüfen Sie in einem Python-Terminal:

>> import xlrd
>> xlrd.__VERSION__

Wenn Sie '0.9.0' haben, können Sie fast alle Dateien öffnen. Wenn Sie '0.6.0' haben, was ich auf Ubuntu gefunden habe, haben Sie möglicherweise Probleme mit den neuesten Excel-Dateien. Sie können die neueste Version von xlrd mithilfe des Distutils-Standards herunterladen. 

8
Silveira Neto

Dies wird bei einigen Dateien passieren, wenn sie auch in Excel geöffnet sind.

4
user1479095

Beim Herunterladen der .xls-Datei habe ich ein ähnliches Problem gefunden und es mit der xlrd-Bibliothek geöffnet. Dann habe ich die Lösung des Konvertierens von .xls in .xlsx ausprobiert: wie man xls in xlsx umwandelt

Es funktioniert wie ein Zauber und anstatt .xls zu öffnen, arbeite ich mit der .xlsx-Datei, die Openpyxl-Bibliothek verwendet.

Ich hoffe, es hilft bei der Lösung Ihres Problems.

3
Ira Noviani

In meinem Fall habe ich nach dem Öffnen der Datei mit einem Texteditor, wie von @ john-machin vorgeschlagen, festgestellt, dass die Datei nicht verschlüsselt ist, da es sich bei einer Excel-Datei um eine verschlüsselte Datei handelt, die jedoch im CSV-Format vorliegt und als Excel-Datei gespeichert wurde. Was ich getan habe, war, die Datei und ihre Erweiterung umzubenennen und stattdessen die read_csv-Funktion zu verwenden: 

os.rename('sample_file.xls', 'sample_file.csv')
csv = pd.read_csv("sample_file.csv", error_bad_lines=False)
1
ambodi

Ich hatte das gleiche Problem. Diese alten Dateien werden wie eine durch Tabulatoren getrennte Datei formatiert. Ich konnte meine Problemdateien mit read_table öffnen. dh df = pd.read_table('trouble_maker.xls').

0
mbauer

Ich habe das gleiche Problem.

es liegt in der XLS-Datei selbst - es sieht aus wie eine Excel-Datei, ist es aber nicht. (Sehen Sie nach, ob es ein Popup gibt, wenn Sie die .xls einfach von Excel aus öffnen.)

sjmachin kommentierte 19. Januar 2013 von https://github.com/python-Excel/xlrd/issues/26 hilft.

0
Mark K

Ich habe gerade xlrd heruntergeladen, ein Excel-Dokument (Excel 2007) zum Testen erstellt und die gleiche Fehlermeldung erhalten (Meldung "Gefunden hat PK\x03\x04\x14\x00\x06\x00 '). Erweiterung ist ein xlsx. Versucht, es in einem älteren .xls-Format zu speichern, und der Fehler verschwindet .....

0
userrenren

Ich traf auch dieses Problem. Ich öffnete diese Datei mit Excel und speicherte sie als andere Formate wie Excel 97-2003. Schließlich löste ich dieses Problem

0
TruelyBob