Accéder au contenu principal

Tutoriel Excel Python : Le guide définitif

Apprenez à lire et à importer des fichiers Excel en Python, à écrire des données dans ces feuilles de calcul et à trouver les meilleurs packages pour ce faire.
Actualisé 4 oct. 2024  · 15 min de lecture

Introduction à Excel en Python

Que vous soyez étudiant ou professionnel, il y a de fortes chances que vous ayez utilisé Excel pour travailler avec des données et des chiffres.

En fait, une étude menée en 2019 a révélé qu'environ 54 % des entreprises utilisent Excel pour effectuer des opérations arithmétiques, analyser des données, créer des visualisations et générer des rapports. Vous pouvez également effectuer des tâches de modélisation prédictive telles que la régression et le regroupement à l'aide d'Excel.

Cependant, malgré les atouts incontestés d'Excel, l'outil présente des inconvénients qui le rendent parfois inefficace dans l'exécution de tâches spécifiques impliquant d'énormes ensembles de données.

L'une des limites d'Excel est son incapacité à traiter de grandes quantités de données. Vous pouvez rencontrer de sérieux problèmes de performance lorsque vous essayez d'effectuer des opérations complexes sur un grand nombre d'entrées de données dans Excel, en particulier si vos formules et macros ne sont pas optimisées pour la performance.

Excel peut également prendre beaucoup de temps si vous devez effectuer des tâches répétitives. Par exemple, si vous devez reproduire une analyse sur plusieurs fichiers Excel chaque semaine, vous devrez les ouvrir manuellement et copier-coller les mêmes formules à plusieurs reprises.

Des enquêtes montrent que 93 % des utilisateurs d'Excel trouvent qu'il est fastidieux de consolider les feuilles de calcul et que les employés passent environ 12 heures par mois à combiner différents fichiers Excel.

Ces inconvénients peuvent être résolus en automatisant les flux de travail Excel avec Python. Des tâches telles que la consolidation des feuilles de calcul, le nettoyage des données et la modélisation prédictive peuvent être effectuées en quelques minutes à l'aide d'un simple script Python qui écrit dans un fichier Excel.

Les utilisateurs d'Excel peuvent également créer un planificateur en Python qui exécute le script automatiquement à différents intervalles de temps, ce qui réduit considérablement la quantité d'intervention humaine nécessaire pour effectuer la même tâche à plusieurs reprises.

Dans cet article, nous allons vous montrer comment :

  • Utilisez une bibliothèque appelée Openpyxl pour lire et écrire des fichiers Excel à l'aide de Python.
  • Créer des opérations arithmétiques et des formules Excel en Python
  • Manipuler des feuilles de calcul Excel à l'aide de Python
  • Créez des visualisations en Python et enregistrez-les dans un fichier Excel.
  • Formater les couleurs et les styles des cellules Excel à l'aide de Python

Apprenez Python à partir de zéro

Maîtrisez Python pour la science des données et acquérez des compétences recherchées.
Commencez à apprendre gratuitement

Introduction à Openpyxl

Openpyxl est une bibliothèque Python qui permet aux utilisateurs de lire et d'écrire dans des fichiers Excel. 

Ce cadre peut vous aider à écrire des fonctions, à formater des feuilles de calcul, à créer des rapports et à élaborer des graphiques directement en Python, sans même avoir à ouvrir une application Excel.

En outre, Openpyxl permet aux utilisateurs d'itérer dans les feuilles de calcul et d'effectuer la même analyse sur plusieurs ensembles de données en même temps. 

Cela améliore l'efficacité et permet d'automatiser les flux de travail Excel puisque les utilisateurs ne doivent effectuer l'analyse que sur une seule feuille de calcul et peuvent la reproduire autant de fois que nécessaire.

Comment installer Openpyxl

Pour installer Openpyxl, ouvrez simplement votre invite de commande ou Powershell et tapez la commande suivante :

$pip install Openpyxl

Vous devriez voir apparaître le message suivant indiquant que le paquet a été installé avec succès :

Succès de l'installation d'Openpyxl

Lire des fichiers Excel en Python avec Openpyxl

Dans ce tutoriel, nous utiliserons l'ensemble de données Kaggle sur les ventes de jeux vidéo. Cet ensemble de données a été prétraité par notre équipe pour les besoins de ce tutoriel, et vous pouvez télécharger la version modifiée à partir de ce lien. Vous pouvez importer Excel dans Python en suivant la procédure ci-dessous :

  1. Chargement du classeur

    Après avoir téléchargé le jeu de données, importez la bibliothèque Openpyxl et chargez le classeur dans Python :

    import openpyxl 
    
    wb = openpyxl.load_workbook('videogamesales.xlsx')

    Maintenant que le fichier Excel est chargé en tant qu'objet Python, vous devez indiquer à la bibliothèque la feuille de calcul à laquelle accéder. Il y a deux façons de procéder :

    La première méthode consiste à appeler simplement la feuille de calcul active, qui est la première feuille du classeur, à l'aide de la ligne de code suivante :

    ws = wb.active

    Si vous connaissez le nom de la feuille de calcul, vous pouvez également y accéder par son nom. Nous utiliserons la feuille "vgsales" dans cette section du tutoriel :

    ws = wb['vgsales']

    Comptons maintenant le nombre de lignes et de colonnes de cette feuille de calcul :

    print('Total number of rows: '+str(ws.max_row)+'. And total number of columns: '+str(ws.max_column))

    Le code ci-dessus devrait produire le résultat suivant :

    Total number of rows: 16328. And total number of columns: 10

    Maintenant que nous connaissons les dimensions de la feuille, passons à la lecture des données du classeur. 

  2. Lecture des données d'une cellule

    Voici une capture d'écran de la feuille active avec laquelle nous allons travailler dans cette section :

    Données sur les ventes de jeux vidéo

    Pour récupérer les données d'une cellule spécifique avec Openpyxl, vous pouvez taper la valeur de la cellule comme suit :

    print('The value in cell A1 is: '+ws['A1'].value)

    Vous devriez obtenir le résultat suivant :

    The value in cell A1 is: Rank
  3. Lecture de données dans plusieurs cellules

    Maintenant que nous savons comment lire les données d'une cellule spécifique, que se passerait-il si nous voulions imprimer toutes les valeurs des cellules d'une certaine ligne de la feuille de calcul ?

    Pour ce faire, vous pouvez écrire une simple boucle "for" pour parcourir toutes les valeurs d'une ligne spécifique :

    values = [ws.cell(row=1,column=i).value for i in range(1,ws.max_column+1)]
    print(values)

    Le code ci-dessus imprime toutes les valeurs de la première ligne :

    ['Rank', 'Name', 'Platform', 'Year', 'Genre', 'Publisher', 'NA_Sales', 'EU_Sales', 'JP_Sales', 'Other_Sales']

    Ensuite, essayons d'imprimer plusieurs lignes dans une colonne spécifique.

    Nous allons créer une boucle for pour afficher les dix premières lignes de la colonne "Nom" sous la forme d'une liste. Nous devrions obtenir les noms mis en évidence dans l'encadré rouge ci-dessous :

    Colonne des noms de jeux vidéo

    data=[ws.cell(row=i,column=2).value for i in range(2,12)]
    print(data)

    Le code ci-dessus produira le résultat suivant :

    ['Wii Sports', 'Super Mario Bros.', 'Mario Kart Wii', 'Wii Sports Resort', 'Pokemon Red/Pokemon Blue', 'Tetris', 'New Super Mario Bros.', 'Wii Play', 'New Super Mario Bros. Wii', 'Duck Hunt']

    Enfin, imprimons les dix premières lignes d'une série de colonnes de la feuille de calcul :

    # reading data from a range of cells (from column 1 to 6)
    
    my_list = list()
    
    for value in ws.iter_rows(
        min_row=1, max_row=11, min_col=1, max_col=6, 
        values_only=True):
        my_list.append(value)
        
    for ele1,ele2,ele3,ele4,ele5,ele6 in my_list:
        (print ("{:<8}{:<35}{:<10}
                 {:<10}{:<15}{:<15}".format(ele1,ele2,ele3,ele4,ele5,ele6)))

    Les dix premières lignes de données dans les six premières colonnes devraient s'afficher après l'exécution du code ci-dessus :

    classement des jeux vidéo

Écrire dans des fichiers Excel avec Openpyxl

Maintenant que nous savons comment accéder et lire des données dans des fichiers Excel, apprenons à écrire dans ces fichiers à l'aide d'Openpyxl.

  1. Écrire à une cellule

    Il y a deux façons d'écrire dans un fichier avec Openpyxl.

    Tout d'abord, vous pouvez accéder directement à la cellule en utilisant sa clé :

    ws['K1'] = 'Sum of Sales'

    Une autre solution consiste à spécifier la position de la ligne et de la colonne de la cellule dans laquelle vous souhaitez écrire :

    ws.cell(row=1, column=11, value = 'Sum of Sales')

    Chaque fois que vous écrivez dans un fichier Excel avec Openpyxl, vous devez sauvegarder vos modifications avec la ligne de code suivante, sinon elles ne seront pas reflétées dans la feuille de calcul :

    wb.save('videogamesales.xlsx')

    Si votre classeur est ouvert lorsque vous essayez de l'enregistrer, vous rencontrerez l'erreur de permission suivante :

    Erreur de permission

    Veillez à fermer le fichier Excel avant d'enregistrer vos modifications. Vous pouvez ensuite l'ouvrir à nouveau pour vous assurer que la modification est reflétée dans votre feuille de calcul :

    Données sur les jeux vidéo avec une nouvelle colonne

    Remarquez qu'une nouvelle colonne appelée "Somme des ventes" a été créée dans la cellule K1.

  2. Création d'une nouvelle colonne

    Additionnons maintenant la somme des ventes dans chaque région et inscrivons-la dans la colonne K.

    Nous le ferons pour les données de vente de la première ligne :

    row_position = 2
    col_position = 7
    
    total_sales = ((ws.cell(row=row_position, column=col_position).value)+
                   (ws.cell(row=row_position, column=col_position+1).value)+
                   (ws.cell(row=row_position, column=col_position+2).value)+
                   (ws.cell(row=row_position, column=col_position+3).value))
    
    ws.cell(row=2,column=11).value=total_sales
    wb.save('videogamesales.xlsx')

    Remarquez que les ventes totales ont été calculées dans la cellule K2 pour le premier jeu de la feuille de calcul :

    Somme des ventes dans la cellule K2

    De même, créons une boucle for pour additionner les valeurs des ventes dans chaque ligne :

    row_position = 1
    
    for i in range(1, ws.max_row):
    
        row_position += 1
        NA_Sales = ws.cell(row=row_position, column=7).value
        EU_Sales = ws.cell(row=row_position, column=8).value
        JP_Sales = ws.cell(row=row_position, column=9).value
        Other_Sales = ws.cell(row=row_position, column=10).value
    
        total_sales = (NA_Sales + EU_Sales + JP_Sales + Other_Sales)
        ws.cell(row=row_position, column=11).value = total_sales
    
    wb.save("videogamesales.xlsx")

    Votre fichier Excel doit maintenant comporter une nouvelle colonne reflétant les ventes totales de jeux vidéo dans toutes les régions :

    Somme des ventes calculée

  3. Ajout de nouvelles lignes

    Pour ajouter une nouvelle ligne au classeur, il suffit de créer un tuple avec les valeurs que vous souhaitez inclure et de l'écrire sur la feuille :

    new_row = (1,'The Legend of Zelda',1986,'Action','Nintendo',3.74,0.93,1.69,0.14,6.51,6.5)
    
    ws.append(new_row)
        
    wb.save('videogamesales.xlsx')

    Vous pouvez confirmer que ces données ont été ajoutées en imprimant la dernière ligne du classeur :

    values = [ws.cell(row=ws.max_row,column=i).value for i in range(1,ws.max_column+1)]
    print(values)

    La sortie suivante sera générée :

    [1, 'The Legend of Zelda', 1986, 'Action', 'Nintendo', 3.74, 0.93, 1.69, 0.14, 6.51, 6.5]
  4. Suppression de lignes

    Pour supprimer la nouvelle ligne que nous venons de créer, vous pouvez exécuter la ligne de code suivante :

    ws.delete_rows(ws.max_row, 1) # row number, number of rows to delete
    
    wb.save('videogamesales.xlsx')

    Le premier argument de la fonction delete_rows() est le numéro de la ligne à supprimer. Le deuxième argument indique le nombre de lignes à supprimer.

Créer des formules Excel avec Openpyxl

Vous pouvez utiliser Openpyxl pour écrire des formules exactement comme vous le feriez dans Excel. Voici quelques exemples de fonctions de base que vous pouvez créer avec Openpyxl :

  1. MOYENNE

    Créons une nouvelle colonne intitulée "Ventes moyennes" pour calculer la moyenne des ventes totales de jeux vidéo sur tous les marchés :

    ws['P1'] = 'Average Sales'
    ws['P2'] = '= AVERAGE(K2:K16220)'
    
    wb.save('videogamesales.xlsx')

    La moyenne des ventes sur l'ensemble des marchés est d'environ 0,19. Elle sera imprimée dans la cellule P2 de votre feuille de calcul.

  2. PAYS

    La fonction "COUNTA" d'Excel compte les cellules qui sont remplies dans une plage spécifique. Utilisons-le pour trouver le nombre d'enregistrements entre E2 et E16220 :

    ws['Q1'] = "Number of Populated Cells" 
    ws['Q2'] = '=COUNTA(E2:E16220)'
    
    wb.save('videogamesales.xlsx')

    Il y a 16 219 enregistrements dans cette gamme qui contiennent des informations.

  3. COUNTIF

    COUNTIF est une fonction Excel couramment utilisée qui compte le nombre de cellules répondant à une condition spécifique. Utilisons-le pour compter le nombre de jeux du genre "Sports" dans cet ensemble de données :

    ws['R1'] = 'Number of Rows with Sports Genre'
    ws['R2'] = '=COUNTIF(E2:E16220, "Sports")'
    
    wb.save('videogamesales.xlsx')

    L'ensemble de données comprend 2 296 jeux sportifs.

  4. SUMIF

    Trouvons maintenant la "somme des ventes" totales générées par les jeux sportifs à l'aide de la fonction SUMIF :

    ws['S1'] = 'Total Sports Sales'
    ws['S2'] = '=SUMIF(E2:E16220, "Sports",K2:K16220)'
     
    wb.save('videogamesales.xlsx')

    Le nombre total de ventes générées par les jeux sportifs est de 454.

  5. PLAFOND

    La fonction CEILING d'Excel arrondit un nombre au multiple spécifié le plus proche. Arrondissons le montant total des ventes générées par les jeux sportifs à l'aide de cette fonction :

    ws['T1'] = 'Rounded Sum of Sports Sales'
    ws['T2'] = '=CEILING(S2,25)'
    
    wb.save('videogamesales.xlsx')

    Nous avons arrondi le chiffre d'affaires total généré par les jeux sportifs au multiple de 25 le plus proche, ce qui donne un résultat de 475.

    Les extraits de code ci-dessus devraient générer la sortie suivante dans votre feuille Excel (à partir des cellules P1 à T2) :

    Rang de vente moyen

    Vous pouvez consulter notre Aide-mémoire sur les bases d' Excel pour en savoir plus sur les formules, les opérateurs, les fonctions mathématiques et le calcul conditionnel.

Travailler avec des feuilles dans Openpyxl

Maintenant que nous savons comment accéder aux feuilles de calcul et y écrire, nous allons apprendre à les manipuler, les supprimer et les dupliquer à l'aide d'Openpyxl.

  1. Changement de nom des feuilles

    Tout d'abord, imprimons le nom de la feuille active avec laquelle nous travaillons actuellement en utilisant l'attribut title d'Openpyxl :

    print(ws.title)

    Le résultat suivant sera affiché :

    vgsales

    Renommons maintenant cette feuille de calcul à l'aide des lignes de code suivantes :

    ws.title ='Video Game Sales Data'
    
    wb.save('videogamesales.xlsx')

    Le nom de votre feuille active doit maintenant être modifié en "Données sur les ventes de jeux vidéo".

  2. Création d'une nouvelle feuille de calcul

    Exécutez la ligne de code suivante pour répertorier toutes les feuilles de calcul du classeur :

    print(wb.sheetnames)

    Vous verrez apparaître un tableau contenant les noms de toutes les feuilles de calcul du fichier :

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']

    Créons maintenant une nouvelle feuille de calcul vide :

    wb.create_sheet('Empty Sheet') # create an empty sheet
    print(wb.sheetnames) # print sheet names again
    
    wb.save('videogamesales.xlsx')

    Remarquez qu'une nouvelle feuille appelée "Feuille vide" a été créée :

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', ‘Empty Sheet’]
  3. Suppression d'une feuille de travail

    Pour supprimer une feuille de calcul à l'aide d'Openpyxl, il suffit d'utiliser l'attribut remove et d'imprimer à nouveau tous les noms de feuilles pour confirmer que la feuille a bien été supprimée :

    wb.remove(wb['Empty Sheet'])
    print(wb.sheetnames)
    
    wb.save('videogamesales.xlsx')

    Remarquez que la feuille de calcul "Feuille vide" n'est plus disponible :

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year']
  4. Duplication d'une feuille de calcul

    Enfin, exécutez cette ligne de code pour créer une copie d'une feuille de calcul existante :

    wb.copy_worksheet(wb['Video Game Sales Data'])
    wb.save('vgsales_2.xlsx')

    En imprimant à nouveau tous les noms de feuilles, nous obtenons le résultat suivant :

    ['Video Game Sales Data', 'Total Sales by Genre', 'Breakdown of Sales by Genre', 'Breakdown of Sales by Year', 'Video Game Sales Data Copy']

Ajouter des graphiques à un fichier Excel avec Openpyxl

Excel est souvent considéré comme l'outil idéal pour créer des visualisations et résumer des ensembles de données. Dans cette section, nous allons apprendre à construire des graphiques dans Excel directement à partir de Python en utilisant Openpyxl.

  1. Diagramme à barres

    Créons d'abord un simple diagramme à barres affichant les ventes totales de jeux vidéo par genre. Pour ce faire, nous utiliserons la feuille de calcul "Ventes totales par genre" :

    Feuille de travail pour le diagramme à barres

    Cette feuille de calcul contient un tableau croisé dynamique dans lequel la somme des ventes a été agrégée par genre, comme le montre la capture d'écran ci-dessus.

    Accédons à cette feuille de calcul avant de commencer à créer le diagramme à barres :

    ws = wb['Total Sales by Genre'] # access the required worksheet

    Nous devons maintenant indiquer à Openpyxl les valeurs et les catégories que nous souhaitons représenter.

    Valeurs :

    Les valeurs comprennent les données "Somme des ventes" que nous voulons tracer. Nous devons indiquer à Openpyxl où trouver ces données dans le fichier Excel en incluant la plage dans laquelle vos valeurs commencent et se terminent.

    Quatre paramètres dans Openpyxl vous permettent de spécifier l'emplacement de vos valeurs :

    • Min_colonne : La colonne minimale contenant les données
    • Max_column : La colonne maximale contenant les données
    • Min_row : La ligne minimale contenant les données
    • Max_row : La ligne maximale contenant les données

    Voici une image illustrant la manière dont vous pouvez définir ces paramètres :

    Quatre paramètres pour définir les valeurs

    Remarquez que la ligne minimale est la première ligne et non la deuxième. En effet, Openpyxl commence à compter à partir de la ligne qui contient une valeur numérique.

    # Values for plotting
    
    from openpyxl.chart import Reference
    
    values = Reference(ws,         # worksheet object   
                       min_col=2,  # minimum column where your values begin
                       max_col=2,  # maximum column where your values end
                       min_row=1,  # minimum row you’d like to plot from
                       max_row=13) # maximum row you’d like to plot from

    Catégories

    Nous devons maintenant définir les mêmes paramètres pour les catégories de notre diagramme à barres :

    Paramètres pour les catégories de diagrammes à barres

    Voici le code que vous pouvez utiliser pour définir les paramètres des catégories du graphique :

    cats = Reference(ws, 
                     min_col=1, 
                     max_col=1, 
                     min_row=2, 
                     max_row=13)

    Création du diagramme à barres

    Nous pouvons maintenant créer l'objet diagramme à barres et y inclure nos valeurs et catégories à l'aide des lignes de code suivantes :

    from openpyxl.chart import BarChart
    
    chart = BarChart()
    chart.add_data(values, titles_from_data=True)
    chart.set_categories(cats)

    Définir les titres des graphiques

    Enfin, vous pouvez définir les titres des graphiques et indiquer à Openpyxl l'endroit où vous souhaitez les créer dans la feuille Excel :

    # set the title of the chart
    chart.title = "Total Sales"
    
    # set the title of the x-axis
    chart.x_axis.title = "Genre"
    
    # set the title of the y-axis
    chart.y_axis.title = "Total Sales by Genre"
    
    # the top-left corner of the chart
    # is anchored to cell F2 .
    ws.add_chart(chart,"D2")
    
    # save the file 
    wb.save("videogamesales.xlsx")

    Vous pouvez ensuite ouvrir le fichier Excel et naviguer jusqu'à la feuille de calcul "Ventes totales par genre". Vous devriez voir apparaître un graphique qui ressemble à celui-ci :

    Ventes totales par genre

  2. Diagramme à barres groupées

    Créons maintenant un diagramme à barres groupées affichant les ventes totales par genre et par région. Vous trouverez les données de ce graphique dans la feuille de calcul "Répartition des ventes par genre" :

    Tableau pour le diagramme à barres groupées

    De la même manière que pour le diagramme à barres, nous devons définir la plage des valeurs et des catégories :

    Définition des valeurs et des catégories pour le diagramme à barres groupées

    Nous pouvons maintenant accéder à la feuille de calcul et écrire cela en code :

    ### Creating a Grouped Bar Chart with Openpyxl
    
    ws = wb['Breakdown of Sales by Genre'] # access worksheet
    
    # Data for plotting
    
    values = Reference(ws,
                       min_col=2,
                       max_col=5,
                       min_row=1,
                       max_row=13)
    
    cats = Reference(ws, min_col=1, 
                         max_col=1, 
                         min_row=2, 
                         max_row=13)

    Nous pouvons maintenant créer l'objet diagramme à barres, y inclure les valeurs et les catégories, et définir les paramètres du titre exactement comme nous l'avons fait précédemment :

    # Create object of BarChart class
    
    chart = BarChart()
    chart.add_data(values, titles_from_data=True)
    chart.set_categories(cats)
    
    # set the title of the chart
    chart.title = "Sales Breakdown"
    
    # set the title of the x-axis
    chart.x_axis.title = "Genre"
    
    # set the title of the y-axis
    chart.y_axis.title = "Breakdown of Sales by Genre"
    
    # the top-left corner of the chart is anchored to cell H2.
    ws.add_chart(chart,"H2")
    
    # save the file 
    wb.save("videogamesales.xlsx")

    Lorsque vous ouvrez la feuille de calcul, un diagramme à barres groupées ressemblant à celui-ci devrait apparaître :

    Diagramme à barres groupées

  3. Graphique à lignes empilées

    Enfin, nous créerons un graphique linéaire empilé en utilisant les données de l'onglet "Ventilation des ventes par année". Cette feuille de calcul contient des données sur les ventes de jeux vidéo ventilées par année et par région :

    Somme des données de vente

    Définissons la plage des valeurs et des catégories de ce graphique :

    Valeurs et catégories pour les graphiques linéaires empilés

    Nous pouvons maintenant écrire ces valeurs minimales et maximales dans le code :

    # Data for plotting
    
    values = Reference(ws,
                       min_col=2,
                       max_col=6,
                       min_row=1,
                       max_row=40)
    
    cats = Reference(ws, min_col=1, max_col=1, min_row=2, max_row=40)

    Enfin, créons l'objet graphique linéaire et définissons le titre, l'axe des abscisses et l'axe des ordonnées du graphique :

    # Create object of LineChart class
    
    from openpyxl.chart import LineChart
    
    chart = LineChart()
    chart.add_data(values, titles_from_data=True)
    chart.set_categories(cats)
    
    # set the title of the chart
    chart.title = "Total Sales"
    
    # set the title of the x-axis
    chart.x_axis.title = "Year"
    
    # set the title of the y-axis
    chart.y_axis.title = "Total Sales by Year"
    
    # the top-left corner of the chart is anchored to cell H2 
    ws.add_chart(chart,"H2")
    
    # save the file 
    wb.save("videogamesales.xlsx")

    Un graphique à lignes empilées ressemblant à celui-ci devrait apparaître sur votre feuille de calcul :

    Graphique à lignes empilées

Formatage des cellules à l'aide d'Openpyxl

Openpyxl permet aux utilisateurs de styliser les cellules dans les classeurs Excel. Vous pouvez embellir votre feuille de calcul en modifiant la taille des polices, les couleurs d'arrière-plan et les bordures des cellules directement dans Python.

Voici quelques façons de personnaliser votre feuille de calcul Excel Python à l'aide d'Openpyxl :

  1. Modifier la taille et le style des polices

    Augmentons la taille de la police dans la cellule A1 et mettons le texte en gras en utilisant les lignes de code suivantes :

    from openpyxl.styles import Font
    
    ws = wb['Video Game Sales Data']
    ws['A1'].font = Font(bold=True, size=12)
    
    wb.save('videogamesales.xlsx')

    Remarquez que le texte de la cellule A1 est maintenant légèrement plus grand et en gras :

    données en gros caractères

    Et si nous voulions modifier la taille et le style de la police pour tous les en-têtes de colonne de la première ligne ?

    Pour ce faire, nous pouvons utiliser le même code et créer simplement une boucle for pour parcourir toutes les colonnes de la première ligne :

    for cell in ws["1:1"]: 
        cell.font = Font(bold=True, size=12)
    
    wb.save('videogamesales.xlsx')

    Lorsque nous itérons sur ["1:1"], nous indiquons à Openpyxl les lignes de début et de fin à parcourir. Si nous voulions parcourir les dix premières lignes, par exemple, nous devrions spécifier ["1:10"] à la place.

    Vous pouvez ouvrir la feuille Excel pour vérifier si les modifications ont été prises en compte :

    données en caractères plus petits

  2. Changement de la couleur de la police

    Vous pouvez modifier la couleur des polices dans Openpyxl en utilisant des codes hexagonaux :

    from openpyxl.styles import colors
    
    ws['A1'].font = Font(color = 'FF0000',bold=True, size=12) ## red
    ws['A2'].font = Font(color = '0000FF') ## blue
    
    wb.save('videogamesales.xlsx')

    Après avoir enregistré le classeur et l'avoir ouvert à nouveau, les couleurs des polices dans les cellules A1 et A2 devraient avoir changé :

    change font color (couleur des polices)

  3. Modification de la couleur d'arrière-plan des cellules

    Pour modifier la couleur d'arrière-plan d'une cellule, vous pouvez utiliser le module PatternFill d'Openpyxl :

    ## changing background color of a cell
    
    from openpyxl.styles import PatternFill
    
    ws["A1"].fill = PatternFill('solid', start_color="38e3ff") # light blue background color
    
    wb.save('videogamesales.xlsx')

    La modification suivante doit être reflétée dans votre feuille de calcul :

    changement de couleur des cellules

  4. Ajout de bordures de cellules

    Pour ajouter une bordure de cellule à l'aide d'Openpyxl, exécutez les lignes de code suivantes :

    ## cell borders
    
    from openpyxl.styles import Border, Side
    
    my_border = Side(border_style="thin", color="000000")
    
    ws["A1"].border = Border(
        top=my_border, left=my_border, right=my_border, bottom=my_border
    )
    
    wb.save("videogamesales.xlsx")

    Vous devriez voir une bordure ressemblant à ceci apparaître dans la cellule A1 :

    changer la couleur des cellules

  5. Formatage conditionnel

    La mise en forme conditionnelle consiste à mettre en évidence des valeurs spécifiques dans un fichier Excel en fonction d'un ensemble de conditions. Il permet aux utilisateurs de visualiser plus facilement les données et de mieux comprendre les valeurs de leurs feuilles de calcul.

    Utilisons Openpyxl pour surligner en vert toutes les valeurs de ventes de jeux vidéo qui sont supérieures ou égales à 8 :

    from openpyxl.formatting.rule import CellIsRule
    
    
    fill = PatternFill(
        start_color='90EE90',
        end_color='90EE90',fill_type='solid') # specify background color
    
    ws.conditional_formatting.add(
        'G2:K16594', CellIsRule(operator='greaterThan', formula=[8], fill=fill)) # include formatting rule
    
    wb.save('videogamesales.xlsx')

    Dans le premier bloc de code, nous spécifions la couleur d'arrière-plan des cellules que nous souhaitons formater. Dans ce cas, la couleur est le vert clair.

    Ensuite, nous créons une règle de mise en forme conditionnelle indiquant que toute valeur supérieure à 8 doit être mise en évidence dans la couleur de remplissage que nous avons spécifiée. Nous indiquons également la plage de cellules dans laquelle nous souhaitons appliquer cette condition.

    Après avoir exécuté le code ci-dessus, toutes les valeurs de vente supérieures à 8 devraient être mises en évidence comme suit :

    conditionnel formaté

Travailler avec Excel en Python : Prochaines étapes

Nous avons couvert beaucoup de terrain dans ce tutoriel, depuis les bases de l'utilisation de la bibliothèque Openpyxl jusqu'à la réalisation d'opérations plus avancées telles que la création de graphiques et le formatage de feuilles de calcul en Python.

Python et Excel sont de puissants outils de manipulation de données utilisés pour élaborer des modèles prédictifs, produire des rapports analytiques et effectuer des calculs mathématiques.

Le plus grand avantage d'Excel est qu'il est utilisé par presque tout le monde. Qu'il s'agisse de parties prenantes non techniques ou de personnes débutantes, les employés de tous niveaux comprennent les rapports présentés dans une feuille de calcul Excel. 

Python, quant à lui, est utilisé pour analyser et construire des modèles sur de grandes quantités de données. Il peut aider les équipes à automatiser les tâches laborieuses et à améliorer l'efficacité de l'organisation.

L'utilisation conjointe d'Excel et de Python permet de gagner des heures sur les flux de travail d'une entreprise tout en conservant une interface familière à tous les membres de l'organisation.

Maintenant que vous savez comment Openpyxl peut être utilisé pour travailler avec des feuilles Excel, voici quelques façons d'approfondir ces nouvelles connaissances et de les utiliser pour ajouter de la valeur à vos flux de travail existants :

  1. Pratique sur des ensembles de données plus importants

    L'ensemble de données que nous avons utilisé ci-dessus ne comporte qu'environ 16 000 lignes, alors qu'Openpyxl peut traiter des quantités beaucoup plus importantes en utilisant les modes optimisés de la bibliothèque. Si votre objectif est d'effectuer rapidement des opérations sur des classeurs Excel volumineux, vous pouvez vous entraîner à utiliser Openpyxl dans ses modes de lecture et d'écriture optimisés.
  2. Suivre un cours en ligne

    Bien que nous ayons couvert les principes fondamentaux du travail avec Excel en Python, de nombreux concepts sortent du cadre de ce cours - notamment le travail avec plusieurs feuilles Excel, la création de tableaux croisés dynamiques et le résumé de grandes quantités de données.

    Nous vous suggérons de suivre le cours Python pour les utilisateurs de tableurs de Datacamp pour combler certaines de ces lacunes dans vos connaissances.
  3. Apprenez à automatiser des flux de travail Excel en Python

     Comme indiqué précédemment dans cette section, le plus grand avantage de l'utilisation de bibliothèques comme Openpyxl est la possibilité de travailler avec plusieurs classeurs à la fois et de planifier des flux de travail afin qu'ils n'aient pas à être répétés plusieurs fois.

    Vous pouvez essayer de créer une fonction simple qui itère à travers plusieurs classeurs à la fois et effectue certaines des opérations couvertes dans ce didacticiel.
  4. Découvrez les différentes bibliothèques

    Alors qu'Openpyxl est une option pour manipuler les fichiers Excel avec Python, il existe des alternatives comme la bibliothèque Pandas qui peut vous aider à traiter le contenu Excel plus rapidement.

    Si le formatage des cellules ou le travail direct avec les formules Excel n'est pas une nécessité pour vous, Pandas pourrait en fait être plus facile à apprendre parce qu'il a une meilleure documentation et un meilleur support communautaire.

    Vous pouvez suivre notre cours Manipulation de données avec Pandas pour commencer à apprendre à connaître la bibliothèque dès aujourd'hui. 

Obtenez une certification dans le rôle de Data Scientist de vos rêves

Nos programmes de certification vous aident à vous démarquer et à prouver aux employeurs potentiels que vos compétences sont adaptées à l'emploi.

Obtenez votre certification
Timeline mobile.png
Sujets

En savoir plus sur Python et les tableurs

Cours

Introduction to Importing Data in Python

3 h
314.6K
Learn to import data into Python from various sources, such as Excel, SQL, SAS and right from the web.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

15 min

Voir plusVoir plus