Partage
  • Partager sur Facebook
  • Partager sur Twitter

Lire un fichier excel avec python

Sujet résolu
12 novembre 2021 à 18:33:20

Bonsoir,

J'essaye de lire un fichier excel à l'aide de ce bout de code:

import pandas as pd
df = pd.read_excel('fichier.xlsx',encoding="utf8")
print (df.head())

Mais l'erreur suivante s'affiche: BadZipFile: File is not a zip file

Alors,j'essaye de transformer ce fichier excel en un fichier csv:
import xlrd
import csv
def csv_from_excel():
    wb = xlrd.open_workbook('fichier.xlsx')
    sh = wb.sheet_by_name('Sheet1')
    your_csv_file = open('your_csv_file.csv', 'w')
    wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)
    for rownum in range(sh.nrows):
        wr.writerow(sh.row_values(rownum))
    your_csv_file.close()
# runs the csv_from_excel function:
csv_from_excel()
 Mais le même erreur s'affiche: BadZipFile: File is not a zip file
 Quelqu'un peut m'aider s'il vous plait. 

-
Edité par AbirSassi 12 novembre 2021 à 18:34:18

  • Partager sur Facebook
  • Partager sur Twitter
12 novembre 2021 à 18:43:19

Les fichiers XLSX sont zippés et si les fichiers zip sont pourris on va avoir BadZipFile, logique.

Peut être qu'ouvrir le fichier avec une application comme Excel/OpenOffice/LibreOffice donnera une indication... Peut être qu'il faut s'inquiéter sur le comment a été généré/récupéré le fichier... Ce sont vos données.

  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
12 novembre 2021 à 18:48:15

Comme dit pas @mps ton fichier peut être corrompu ou protégé, tu peux essayer ceci, mais sans trop de conviction :

df = pd.read_excel('fichier.xlsx', engine='openpyxl')



  • Partager sur Facebook
  • Partager sur Twitter
12 novembre 2021 à 18:48:39

@mps

Mais c'est ne pas un seul fichier, alors je ne peux pas  les ouvrir un par un et c'est pour ça que je cherche un autre solution à l'aide du code.

@Diablo76

J'essaye avec votre proposition,mais le même erreur s'affiche.

-
Edité par AbirSassi 12 novembre 2021 à 18:53:36

  • Partager sur Facebook
  • Partager sur Twitter
12 novembre 2021 à 19:11:14

AbirSassi a écrit:

@mps

Mais c'est ne pas un seul fichier, alors je ne peux pas  les ouvrir un par un et c'est pour ça que je cherche un autre solution à l'aide du code.

Les ouvrir avec une application EXCEL sert juste à vérifier que les fichiers sont effectivement corrompus. Si c'est le cas, coder ne va pas apporter grand chose... Et tant que vous ne l'aurez pas vérifié...
  • Partager sur Facebook
  • Partager sur Twitter
12 novembre 2021 à 19:19:28

mps a écrit:

AbirSassi a écrit:

@mps

Mais c'est ne pas un seul fichier, alors je ne peux pas  les ouvrir un par un et c'est pour ça que je cherche un autre solution à l'aide du code.

Les ouvrir avec une application EXCEL sert juste à vérifier que les fichiers sont effectivement corrompus. Si c'est le cas, coder ne va pas apporter grand chose... Et tant que vous ne l'aurez pas vérifié...

J'ai vérifié les fichiers, c'est comme vous avez dit les fichiers sont corrompus.

         Merci pour votre remarque.



  • Partager sur Facebook
  • Partager sur Twitter
7 janvier 2022 à 8:55:20 - Message modéré pour le motif suivant : Message complètement hors sujet


7 janvier 2022 à 9:33:21

@GiuseppeRocco1 Bonjour, merci de ne pas déterrer d'ancien sujet résolu pour une nouvelle question. Créer le votre dans le respect des règles du forum à savoir qu'un message commence par des règles de politesses (un bonjour ou des salutations à la communauté et se termine par des remerciements par avance pour les futures réponses) un descriptif de votre problème et le code que vous avez écrit inséré sur le forum avec l'outil d'intégration de code soit le bouton code </>.

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Je ferme ce sujet. En cas de désaccord, me contacter par MP.

  • Partager sur Facebook
  • Partager sur Twitter