Logo Zéphyrnet

Automatisez Microsoft Excel et Word à l'aide de Python

Date :

Automatisez Microsoft Excel et Word à l'aide de Python

Mots clés: Excel, Microsoft, Python

Intégrez Excel à Word pour générer des rapports automatisés de manière transparente.


By Mohamed Khorasani, Data Scientist/Ingénieur Hybride



Photo par Isaac Smith on Unsplash

 

Microsoft Excel et Word sont sans aucun doute les deux logiciels les plus utilisés dans le monde de l'entreprise et non-entreprise. Ils sont pratiquement synonymes du terme « travail » lui-même. Souvent, il ne se passe pas une semaine sans que nous utilisions la combinaison des deux et d'une manière ou d'une autre mettant leur bonté à profit. Alors que pour un usage quotidien moyen, l'automatisation ne serait pas sollicitée, il y a des moments où l'automatisation peut être une nécessité. À savoir, lorsque vous avez une multitude de graphiques, de figures, de tableaux et de rapports à générer, cela peut devenir une entreprise extrêmement fastidieuse si vous choisissez l'itinéraire manuel. Eh bien, ça ne doit pas être comme ça. Il existe en fait un moyen de créer un pipeline en Python où vous pouvez intégrer les deux de manière transparente pour produire des feuilles de calcul dans Excel, puis transférer les résultats vers Word pour générer un rapport pratiquement instantanément.

openpyxl

 
 
Rencontrez Openpyxl, sans doute l'une des liaisons les plus polyvalentes de Python qui fait de l'interfaçage avec Excel une promenade dans le parc. Armé de cela, vous pouvez lire et écrire tous les formats Excel actuels et hérités, c'est-à-dire xlsx et xls. Openpyxl vous permet de remplir des lignes et des colonnes, d'exécuter des formules, de créer des graphiques 2D et 3D, d'étiqueter des axes et des titres, et une pléthore d'autres capacités ça peut être utile. Plus important encore, ce package vous permet d'itérer un nombre infini de lignes et de colonnes dans Excel, vous épargnant ainsi tous ces calculs et traçages embêtants que vous deviez faire auparavant.

Python-docx

 
 
Et puis vient Python-docx, ce package est à Word ce qu'Openpyxl est à Excel. Si vous n'avez pas déjà étudié leur Documentation, alors vous devriez probablement y jeter un œil. Python-docx est sans exagération l'une des boîtes à outils les plus simples et les plus explicites avec lesquelles j'ai travaillé depuis que j'ai commencé à travailler avec Python lui-même. Il vous permet d'automatiser la génération de documents en insérant du texte, en remplissant des tableaux et en restituant des images dans votre rapport automatiquement sans aucun frais généraux.

Sans plus tarder, créons notre propre pipeline automatisé. Lancez Anaconda (ou tout autre IDE de votre choix) et installez les packages suivants :

pip install openpyxlpip install python-docx

Automatisation Microsoft Excel

 
 
Initialement, nous allons charger un classeur Excel qui a déjà été créé (illustré ci-dessous) :

workbook = xl.load_workbook('Book1.xlsx')
sheet_1 = workbook['Sheet1']



Image de l'auteur.

 

Par la suite, nous parcourrons toutes les lignes de notre feuille de calcul pour calculer et insérer les valeurs de puissance en multipliant le courant par la tension :

for row in range(2, sheet_1.max_row + 1): current = sheet_1.cell(row, 2) voltage = sheet_1.cell(row, 3) power = float(current.value) * float(voltage.value) power_cell = sheet_1.cell(row, 1) power_cell.value = power

Une fois cela fait, nous utiliserons les valeurs calculées pour la puissance pour générer un graphique linéaire qui sera inséré dans la cellule spécifiée, comme indiqué ci-dessous :

values = Reference(sheet_1, min_row = 2, max_row = sheet_1.max_row, min_col = 1, max_col = 1)
chart = LineChart()
chart.y_axis.title = 'Power'
chart.x_axis.title = 'Index'
chart.add_data(values)
sheet_1.add_chart(chart, 'e2') workbook.save('Book1.xlsx')



Feuille de calcul Excel générée automatiquement. Image de l'auteur.

 

Extraction du graphique

 
 
Maintenant que nous avons généré notre graphique, nous devons l'extraire sous forme d'image afin de pouvoir l'utiliser dans notre rapport Word. Tout d'abord, nous allons déclarer l'emplacement exact de notre fichier Excel et également l'endroit où l'image du graphique de sortie doit être enregistrée :

input_file = "C:/Users/.../Book1.xlsx"
output_image = "C:/Users/.../chart.png"

Accédez ensuite à la feuille de calcul en utilisant la méthode suivante :

operation = win32com.client.Dispatch("Excel.Application")
operation.Visible = 0
operation.DisplayAlerts = 0
workbook_2 = operation.Workbooks.Open(input_file)
sheet_2 = operation.Sheets(1)

Par la suite, vous pouvez parcourir tous les objets graphiques de la feuille de calcul (s'il y en a plusieurs) et les enregistrer à l'emplacement spécifié en tant que tel :

for x, chart in enumerate(sheet_2.Shapes): chart.Copy() image = ImageGrab.grabclipboard() image.save(output_image, 'png') passworkbook_2.Close(True)
operation.Quit()

Automatisation de Microsoft Word

 
 
Maintenant que nous avons généré notre image de graphique, nous devons créer un modèle de document qui est essentiellement un document Microsoft Word (.docx) normal formulé exactement de la façon dont nous voulons que notre rapport ressemble, y compris les polices, les tailles de police, le formatage et la structure de la page. . Ensuite, tout ce que nous avons à faire est de créer des espaces réservés pour notre contenu automatisé, c'est-à-dire des valeurs de table et des images, et de les déclarer avec des noms de variables, comme indiqué ci-dessous.



Modèle de document Microsoft Word. Image de l'auteur.

 

Tout contenu automatisé peut être déclaré à l'intérieur d'une paire de doubles accolades {{variable_name}}, y compris le texte et les images. Pour les tableaux, vous devez créer un tableau avec une ligne de modèle avec toutes les colonnes incluses, puis vous devez ajouter une ligne au-dessus et une ligne en dessous avec la notation suivante :

Première rangée:

{%tr for item in variable_name %}

Dernière rangée:

{%tr endfor %}

Dans la figure ci-dessus, les noms des variables sont

  • table_contenu pour le dictionnaire Python qui stockera nos données tabulaires
  • Sommaire pour les clés du dictionnaire (première colonne)
  • Puissance, courant et tension pour les valeurs du dictionnaire (deuxième, troisième et quatrième colonnes)

Ensuite, nous importons notre document modèle dans Python et créons un dictionnaire qui stockera les valeurs de notre table :

template = DocxTemplate('template.docx')
table_contents = []for i in range(2, sheet_1.max_row + 1): table_contents.append({ 'Index': i-1, 'Power': sheet_1.cell(i, 1).value, 'Current': sheet_1.cell(i, 2).value, 'Voltage': sheet_1.cell(i, 3).value })

Ensuite, nous importerons l'image du graphique précédemment produite par Excel et créerons un autre dictionnaire pour instancier toutes les variables d'espace réservé déclarées dans le document modèle :

image = InlineImage(template,'chart.png',Cm(10))context = { 'title': 'Automated Report', 'day': datetime.datetime.now().strftime('%d'), 'month': datetime.datetime.now().strftime('%b'), 'year': datetime.datetime.now().strftime('%Y'), 'table_contents': table_contents, 'image': image }

Et enfin, nous allons afficher le rapport avec notre table de valeurs et notre image graphique :

template.render(context)
template.save('Automated_report.docx')

Résultats

 
 
Et voilà, un rapport Microsoft Word généré automatiquement avec des chiffres et un graphique créé dans Microsoft Excel. Et avec cela, vous disposez d'un pipeline entièrement automatisé qui peut être utilisé pour créer autant de tableaux, de graphiques et de documents que vous pourriez avoir besoin.



Rapport généré automatiquement. Image de l'auteur.

 

Code source

 
 

 
Si vous souhaitez en savoir plus sur la visualisation des données et Python, n'hésitez pas à consulter les cours suivants (liés aux affiliés) :

 
Visualisation des données avec Python
 

Spécialisation Python pour tous
 

Le code source et le modèle de ce didacticiel se trouvent dans le référentiel GitHub suivant.

 
mkhorasani/excel_word_automation
 

De plus, n'hésitez pas à vous abonner à Medium et à explorer plus de mes tutoriels ici.

 
Bio: Mohamed Khorasani est un hybride d'un scientifique des données et d'un ingénieur. Logisticien. Candide. Realpolitik. Désapprendre le dogme une croyance à la fois. Lire la suite des écrits de Mohammed.

ORIGINALE. Republié avec permission.

Connexe:


PlatonAi. Web3 réinventé. L'intelligence des données amplifiée.
Cliquez ici pour y accéder.

Source : https://www.kdnuggets.com/2021/08/automate-microsoft-excel-word-python.html

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?