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.
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.
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.
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.
cela arrive à certains fichiers alors qu'ils sont également ouverts dans Excel.
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.
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)
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 .....
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.
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
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')
.
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.
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.