J'essaie d'ouvrir un fichier Excel qui m'a été donné pour mon projet, le fichier Excel est le fichier que nous obtenons d'un système SAP. Mais lorsque j'essaye de l'ouvrir en utilisant des pandas
, j'obtiens l'erreur suivante:
XLRDError: format non pris en charge ou fichier corrompu: enregistrement BOF attendu; trouvé '\ xff \ xfe \ r \ x00 \ n \ x00 \ r \ x00'
Voici mon code:
import pandas as pd # To open an excel file df = pd.ExcelFile('myexcel.xls').parse('Sheet1')
3 Réponses :
Je ne sais pas si cela fonctionnera pour vous une fois que cela aura fonctionné pour moi, mais de toute façon pouvez-vous essayer ce qui suit:
from __future__ import unicode_literals from xlwt import Workbook import io filename = r'myexcel.xls' # Opening the file using 'utf-16' encoding file1 = io.open(filename, "r", encoding="utf-16") data = file1.readlines() # Creating a workbook object xldoc = Workbook() # Adding a sheet to the workbook object sheet = xldoc.add_sheet("Sheet1", cell_overwrite_ok=True) # Iterating and saving the data to sheet for i, row in enumerate(data): # Two things are done here # Removeing the '\n' which comes while reading the file using io.open # Getting the values after splitting using '\t' for j, val in enumerate(row.replace('\n', '').split('\t')): sheet.write(i, j, val) # Saving the file as an excel file xldoc.save('myexcel.xls')
salut, Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'xlwt'
erreur suivante Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'xlwt'
vous devez installer la bibliothèque xlwt
.
pouvez-vous essayer d'utiliser encoding='utf-16le'
pour certains fichiers, cela fonctionnait avec utf-16le
, et pour d'autres avec utf-16
. En tout cas merci pour la réponse.
J'avais fait face au même xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record;
erreur et l'a résolu en écrivant un convertisseur XML vers XLSX. Vous pouvez appeler pd.ExcelFile('myexcel.xlsx')
après la conversion. La raison en est qu'en fait, pandas utilise xlrd pour lire les fichiers Excel et xlrd ne prend pas en charge la feuille de calcul XML (* .xml) c'est-à-dire PAS au format XLS ou XLSX.
import pandas as pd from bs4 import BeautifulSoup def convert_to_xlsx(): with open('sample.xls') as xml_file: soup = BeautifulSoup(xml_file.read(), 'xml') writer = pd.ExcelWriter('sample.xlsx') for sheet in soup.findAll('Worksheet'): sheet_as_list = [] for row in sheet.findAll('Row'): sheet_as_list.append([cell.Data.text if cell.Data else '' for cell in row.findAll('Cell')]) pd.DataFrame(sheet_as_list).to_excel(writer, sheet_name=sheet.attrs['ss:Name'], index=False, header=False) writer.save()
Ce qui a fonctionné pour moi, c'est d'appliquer ce conseil:
Comment faire face à une erreur XLRDError
Vous y trouvez également une explication appropriée qui m'a été appropriée. Il dit que le problème était un format de fichier pas correctement enregistré. Lorsque j'ai ouvert le fichier xls, il a proposé de l'enregistrer au format html.Je l'ai enregistré dans un ".xlsx" et j'ai résolu le problème
êtes-vous capable d'ouvrir le fichier dans msexcel?
oui je suis capable de l'ouvrir en utilisant msexcel, mais pas en pandas
Pouvez-vous joindre le fichier XLS à la question?
Salut Arpit, en fait les données sont peu confidentielles, toutes sont des données médicales.