12 votes

Lecture du format .xlsx en python

Je dois lire un fichier .xlsx toutes les 10 minutes en python.
Quelle est la manière la plus efficace de le faire ?
J'ai essayé d'utiliser xlrd, mais il ne lit pas les fichiers .xlsx - selon la documentation, il le fait, mais je ne peux pas le faire - j'obtiens Unsupported format, or corrupt file exceptions.
Quelle est la meilleure façon de lire les xlsx ?
Je dois aussi lire les commentaires dans les cellules.

8voto

Adam Points 2669

Xlrd n'a pas encore publié la version permettant de lire les xlsx. En attendant, Eric Gazoni a construit un paquet appelé openpyxl - lit les fichiers xlsx, et en fait une écriture limitée.

5voto

Debasish Points 41

Utiliser Openpyxl quelques exemples de base :

import openpyxl

# Open Workbook
wb = openpyxl.load_workbook(filename='example.xlsx', data_only=True)

# Get All Sheets
a_sheet_names = wb.get_sheet_names()
print(a_sheet_names)

# Get Sheet Object by names
o_sheet = wb.get_sheet_by_name("Sheet1")
print(o_sheet)

# Get Cell Values
o_cell = o_sheet['A1']
print(o_cell.value)

o_cell = o_sheet.cell(row=2, column=1)
print(o_cell.value)

o_cell = o_sheet['H1']
print(o_cell.value)

# Sheet Maximum filled Rows and columns
print(o_sheet.max_row)
print(o_sheet.max_column)

5voto

RndmSymbl Points 257

Il y a plusieurs façons de lire les fichiers au format XLSX à l'aide de python . Deux d'entre eux sont illustrés ci-dessous et nécessitent l'installation d'openpyxl au moins et si vous voulez analyser directement dans pandas, vous devez installer pandas, par exemple. pip install pandas openpyxl

Option 1 : pandas direct

Cas d'utilisation principal : charger uniquement les données pour un traitement ultérieur.

Utilisation de read_excel() dans pandas serait votre meilleur choix. Notez que pandas devrait se rabattre sur openpyxl automatiquement, mais en cas de problèmes de format, il est préférable de spécifier le moteur directement.

df_pd = pd.read_excel("path/file_name.xlsx", engine="openpyxl")

Option 2 - openpyxl direct

Cas d'utilisation principal : obtenir ou modifier des éléments spécifiques de documents Excel tels que des commentaires (demandés par OP), des propriétés de formatage ou des formules.

Utilisation de load_workbook() suivi de l'extraction des commentaires en utilisant le attribut de commentaire pour chaque cellule serait obtenue de la manière suivante.

from openpyxl import load_workbook
wb = load_workbook(filename = "path/file_name.xlsx")
ws = wb.active
ws["A1"].comment # <- loop through row & columns to extract all comments

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