283 votes

Pandas : Recherche de la liste des feuilles dans un fichier Excel

La nouvelle version de Pandas utilise l'interface suivante pour charger des fichiers Excel :

read_excel('path_to_file.xls', 'Sheet1', index_col=None, na_values=['NA'])

mais que faire si je ne connais pas les feuilles qui sont disponibles ?

Par exemple, je travaille avec des fichiers Excel contenant les feuilles suivantes

Données 1, Données 2 ..., Données N, foo, bar

mais je ne sais pas N a priori.

Existe-t-il un moyen d'obtenir la liste des feuilles d'un document Excel dans Pandas ?

488voto

Andy Hayden Points 38010

Vous pouvez toujours utiliser le Fichier Excel (et la classe sheet_names ) :

xl = pd.ExcelFile('foo.xls')

xl.sheet_names  # see all sheet names

xl.parse(sheet_name)  # read a specific sheet to DataFrame

voir documentation pour parse pour plus d'options...

85voto

Nicholas Lu Points 532

Vous devez spécifier explicitement le deuxième paramètre (sheetname) comme None. comme ceci :

 df = pandas.read_excel("/yourPath/FileName.xlsx", None);

"df" sont toutes les feuilles comme un dictionnaire de DataFrames, vous pouvez le vérifier en exécutant ceci :

df.keys()

résultat comme celui-ci :

[u'201610', u'201601', u'201701', u'201702', u'201703', u'201704', u'201705', u'201706', u'201612', u'fund', u'201603', u'201602', u'201605', u'201607', u'201606', u'201608', u'201512', u'201611', u'201604']

Veuillez vous référer à la documentation sur les pandas pour plus de détails : https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_excel.html

20voto

Supratik Sarkar Points 81

La manière la plus simple de récupérer les noms de feuilles d'un fichier Excel (xls., xlsx) est la suivante :

tabs = pd.ExcelFile("path").sheet_names 
print(tabs)

Ensuite, pour lire et stocker les données d'une feuille particulière (disons que les noms des feuilles sont "Feuille1", "Feuille2", etc.), disons "Feuille2" par exemple :

data = pd.read_excel("path", "Sheet2") 
print(data)

14voto

S.E.A Points 121

C'est le moyen le plus rapide que j'ai trouvé, inspiré par la réponse de @divingTobi. Toutes les réponses basées sur xlrd, openpyxl ou pandas sont lentes pour moi, car elles chargent toutes le fichier entier en premier.

from zipfile import ZipFile
from bs4 import BeautifulSoup  # you also need to install "lxml" for the XML parser

with ZipFile(file) as zipped_file:
    summary = zipped_file.open(r'xl/workbook.xml').read()
soup = BeautifulSoup(summary, "xml")
sheets = [sheet.get("name") for sheet in soup.find_all("sheet")]

5voto

#It will work for Both '.xls' and '.xlsx' by using pandas

import pandas as pd
excel_Sheet_names = (pd.ExcelFile(excelFilePath)).sheet_names

#for '.xlsx' use only  openpyxl

from openpyxl import load_workbook
excel_Sheet_names = (load_workbook(excelFilePath, read_only=True)).sheet_names

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X