Python xlrd format non supporté, ou fichier corrompu.

mon code:

import xlrd
wb = xlrd.open_workbook("Z:DataLocates3.8 locates.xls")
sh = wb.sheet_by_index(0)
print sh.cell(0,0).value

L'erreur:

Traceback (most recent call last):
File "Z:WilsontradedStockStatus.py", line 18, in <module>
wb = xlrd.open_workbook("Z:DataLocates3.8 locates.xls")
File "C:Python27libsite-packagesxlrd__init__.py", line 429, in open_workbook
biff_version = bk.getbof(XL_WORKBOOK_GLOBALS)
File "C:Python27libsite-packagesxlrd__init__.py", line 1545, in getbof
bof_error('Expected BOF record; found %r' % self.mem[savpos:savpos+8])
File "C:Python27libsite-packagesxlrd__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'"

Le fichier ne semble pas être corrompu ou d'un autre format. Rien pour aider à trouver la source du problème serait génial.

18
demandé sur wDroter 2012-03-08 22:43:13

11 réponses

Vous dites:

Le fichier ne semble pas être corrompu ou d'un autre format.

Cependant, comme le message d'erreur dit, les 8 premiers octets du fichier '<table r'... ce n'est certainement pas Excel .xls format. Ouvrez-le avec un éditeur de texte (par exemple Notepad) qui ne tiendra pas compte du (incorrect) .xls extension et de voir par vous-même.

20
répondu John Machin 2012-03-09 09:14:07

j'ai eu un problème similaire et il était lié à la version. Dans un terminal python, Vérifiez:

>> import xlrd
>> xlrd.__VERSION__

Si vous avez '0.9.0' vous pouvez ouvrir presque tous les fichiers. Si vous avez '0.6.0' ce qui est ce que J'ai trouvé sur Ubuntu, vous pouvez avoir des problèmes avec les plus récents fichiers Excel. Vous pouvez télécharger la dernière version de xlrd en utilisant le standard Distutils.

7
répondu Silveira Neto 2013-03-15 16:09:51

Essayez de l'ouvrir avec les pandas:

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

ou essayez n'importe quel autre parser html python.

ce n'est pas un bon fichier excel, mais un html lisible avec excel.

7
répondu foebu 2018-05-28 22:19:50

cela arrive à certains fichiers alors qu'ils sont également ouverts dans Excel.

4
répondu user1479095 2013-06-27 05:37:39

j'ai trouvé le même problème lors du téléchargement .le fichier xls et l'a ouvert en utilisant la bibliothèque xlrd. Puis j'ai essayé la solution de la conversion .xls en .xlsx comme détaillé ici: comment convertir xls en xlsx

cela fonctionne comme un charme et plutôt que l'ouverture .xls, je suis en train de travailler avec .le fichier xlsx utilise maintenant la bibliothèque openpyxl.

Espérons qu'il aidera à résoudre votre problème.

3
répondu Ira Noviani 2017-05-23 11:33:17

dans mon cas, après avoir ouvert le fichier avec un éditeur de texte comme @john-machin l'a suggéré, j'ai réalisé que le fichier N'est pas crypté comme un fichier Excel est censé L'être mais il est dans le format CSV et a été enregistré comme un fichier Excel. Ce que j'ai fait a été renommé le fichier et son extension et utilisé read_csv fonction:

os.rename('sample_file.xls', 'sample_file.csv')
csv = pd.read_csv("sample_file.csv", error_bad_lines=False)
1
répondu ambodi 2015-07-09 13:02:49

je viens de télécharger xlrd, j'ai créé un document excel (excel 2007) pour tester et j'ai eu la même erreur (message: 'found PK\x03\x04\x14\x00\x06\x00'). L'Extension est un xlsx. Essayé de l'enregistrer à l'ancienne .format xls et l'erreur disparaît .....

0
répondu userrenren 2012-03-18 16:02:14

je rencontre le même problème.

il se trouve dans le .XLS fichier lui - même-il ressemble à un fichier Excel mais il n'est pas. (voir s'il y a un pop-up quand vous ouvrez simplement le .xls de Excel)

sjmachin commente le 19 janvier 2013 de https://github.com/python-excel/xlrd/issues/26 aide.

0
répondu Mark K 2015-07-23 04:24:10

j'ai rencontré ce problème aussi.J'ai ouvert ce fichier excel et l'a sauvé d'autres formats tels que excel 97-2003 et enfin, j'ai résolu ce problème

0
répondu TruelyBob 2016-08-04 08:38:59

j'ai eu le même problème. Ces anciens fichiers sont formatés comme un fichier délimité par des tabulations. J'ai pu ouvrir mes fichiers de problème avec read_table; iedf = pd.read_table('trouble_maker.xls').

0
répondu mbauer 2018-03-01 04:05:39

il n'y a rien de mal avec votre fichier. xlrd ne prend pas encore en charge les fichiers XLSX (excel 2007+) bien qu'il soit supposé l'avoir pris en charge depuis un certain temps.

Simplistix github

il y a 2 jours, ils ont engagé une version pré-alpha de leur git qui intègre le support xlsx. D'autres forums suggèrent d'utiliser un analyseur DOM pour les fichiers xlsx puisque le type de fichier xlsx n'est qu'une archive zip contenant du XML. Je n'ai pas essayé. il y a un autre paquet avec des fonctionnalités similaires à celles de xlrd et ceci est appelé openpyxl que vous pouvez obtenir à partir de easy_install ou pip. Je n'ai pas essayé cela non plus, cependant, son API est censée être similaire à xlrd.

-1
répondu GE420 2012-04-15 05:18:55