1
votes

Python - XLRDError: format non pris en charge ou fichier corrompu: enregistrement BOF attendu

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')


4 commentaires

ê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.


3 Réponses :


1
votes

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')


4 commentaires

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.



0
votes

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()


0 commentaires

0
votes

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


0 commentaires