Académique Documents
Professionnel Documents
Culture Documents
Prerequis:
- Connaître les notions de base des classeurs excel
- Avoir excel installé sur son ordinateur. Ou alors open office si on utilise MAC
ou Linux.
- revoir les notions sur la lecture et l'écriture des fichiers en python
(optionnel)
Pour commencer, il va falloir disponibiliser des fichiers excels sur notre post de
travail.
Vous pouvez créer vos propres fichiers, mais je recommande de télécharger des
fichiers que j'avais déjà préparer pour vous
dans le dossier partager.
2. Création du projet
Lancez visual studio code et créer le dossier qui doit contenir votre projet.
Donnez-lui le nom de votre choix.
Dans le dossier, créer le fichier "fichiers_excel.py" et ouvrez-le dans l'éditeur
de code.
Nous allons utilisez la librairie openpyxl pour manipuler les ficher python.
Ouvrez votre terminal et tapez la commande:
pip install openpyxl (Si vous utilisez Linux ou Mac, tapez pip3).
import openpyxl
A ce stade, nous pouvons déjà ouvrir les fichiers excels et avoir accès à leurs
contenus.
Ouvrons le fichier octobre.xlsx et recupérons le résultat dans une variable.
wb = openpyxl.load_workbook('octobre.xlsx')
Nous pouvons déjà tester pour savoir combien des feuilles il y a dans notre
workbook (classeur).
print(wb.sheetnames)
Attention: Si vous avez une erreur, rassurez vous que vous lancez le script à
partir du bon réportoir. Vous devez lancer le script à partir du répertoire qui
contient vos fichiers excel. Sinon, il faut alors préciser le chemin vers vos
fichiers pour que le script soit en mesure de retrouver le fichier à ouvrir.
Une fois que l'on connait le nom d'une feuille, on peut la récupérer dans une
variable et pouvoir y faire des opérations.
sheet = wb['Feuil1']
Pour lire les données dans la feuille. Ajouter les instructions suivantes et
exécutés le fichier pour voir le résultat.
cell = sheet['A1']
print(cell.value)
ou bien
cell = sheet.cell(1, 1)
print(cell.value)
Cette façon d'écrire peut nous permettre d'appliquer les boucles pour lire les
données sur un plage de cellules.
Prenons l'exemple de la plage des prix unitaires de tous les articles (B2:B6)
NB: Si vous lisez la valeur d'une cellule vide, vous recevez le résultat "None".
Choisissez de lire une cellule vide dans le classeur et affichez le résultat pour
vérifier. Utiliser l'une des méthodes utilisées plus haut pour lire les cellules.
print(sheet.max_row)
print(sheet.max_column)
wb = openpyxl.load_workbook('octobre.xlsx')
wb2 = openpyxl.load_workbook('novembre.xlsx')
wb3 = openpyxl.load_workbook('decembre.xlsx')
Nous allons alors essayer de collecter les données de chacun de ces fichiers excel
pour constituer une structure des données que nous pouvons manipuler à notre guise.
Dans cette étape, nous allons intéresser par exemples au total des ventes pour
chaque article pour tous les trois mois.
Commençons par récupérer les noms des articles et les totaux des ventes. Stockons-
les dans un dictionnaires.
sheet1 = wb.active
donnees = {}
for row in range(2, sheet1.max_row):
nom_article= sheet1.cell(row, column=1).value
if not nom_article:
break
total_vente = sheet1.cell(row, column=4).value
donnees[nom_article] = total_vente
print(donnees)
wb = openpyxl.load_workbook('octobre.xlsx', data_only=True)
wb2 = openpyxl.load_workbook('novembre.xlsx', data_only=True)
wb3 = openpyxl.load_workbook('decembre.xlsx', data_only=True)
Jusqu'à présent, nous lisons dans un seul fichier. Comment lire les autres fichiers
et ajouter les données à notre dictionnaire.
Nous allons d'abords modifier le code pour qu'on récupère une liste de prix pour
chaque article étant donnée qu'il s'agit de plusieurs mois. On modifie uniquement
la ligne :
donnees[nom_article] = [total_vente]
Ensuite, on va crééer une fonction pour nous permettre de pouvoir lire tous les
classeurs.
Cette fonction aura donc deux paramètres: le classeur à lire et le dictionnaire qui
doit recevoir les données. Modifions notre code ainsi:
dictionnaires = {}
ajouter_data_depuis_wb(wb1, dictionnaires)
ajouter_data_depuis_wb(wb2, dictionnaires)
ajouter_data_depuis_wb(wb3, dictionnaires)
print(dictionnaires)
Ceci permet de résoudre un dilème. Même si l'ordre des articles au niveau des
classeurs n'est pas identique, le script ajoutera les données en respectant la
correspondance avec la clé.
Dans cette section, nous allons nous arranger pour créer un fichier qui stockera
les données que nous avons récupérées dans la section précédente. Il s'agit
d'enregister les ventes d'octobre, de novembre et de décembre pour chaque pour
article.
Nous allons dévoir nommer certaines choses manuellement dans python pour nous
permettre d'insérer les valeurs automatiquement plus tard.
wb_final = openpyxl.Workbook()
sheet_final = wb_final.active
#On donne les valeurs aux quatres premières cellues (A1, B1, C1, D1)
sheet_final.append(["Article", "Octobre", "Novembre", "Décembre"])
#On enregistre en créant un fichier nommé ventes.xlsx. Cette instruction vient
toujours à la fin de toutes les intructions d'écriture.
wb_final.save("ventes.xlsx")
Une autre façon de donner les valeurs aux cellules est la suivante:
sheet_final['A1'] = "Article"
sheet_final['B1'] = "Octobre"
sheet_final['C1'] = "Novembre"
sheet_final['D1'] = "Decembre"
Ajoutons les valeurs des ventes. Nous allons modifiez la boucle pour ajouter les
ventes. Nous devons itérer sur la variable vente qui contient les valeurs.
Ceci est aussi simple si nous choisissons d'utiliser les tableaux à deux
dimensions. Ajoutons les articles et les valeurs dans la la feuille.
row=2
for i in dictionnaires:
print(i)
sheet_final.cell(row, 1).value = i
sheet_final.cell(row, 2).value = dictionnaires[i][0]
sheet_final.cell(row, 3).value = dictionnaires[i][1]
sheet_final.cell(row, 4).value = dictionnaires[i][2]
row += 1
wb_final.save("ventes.xlsx")
7. Ajouter un graphique
Partant du fichier vente créé, nous allons construire un graphique pour voir
comment les prix des articles ont évolué de Octobre à Décembre.
Créons la référence.
graphique= openpyxl.chart.BarChart()
graphique.append(graphique_series)
Félicitation. Maintenant vous avez appris à manipuler des fichiers excel avec
Python.
Pour en savoir plus sur le graphique, prière consulter la documentation via ce
lien: https://openpyxl.readthedocs.io/en/stable/charts/introduction.html