quelques exemples de manipulation
#!/usr/bin/python3
import os, os.path
#import pandas as pd
import openpyxl
from openpyxl import Workbook
from openpyxl.styles import Font, Color
from openpyxl.formula.translate import Translator
# identifie les fichiers concernés
premier = "./A.xlsx"
second = "./B.xlsx"
# ouverture des fichiers
wbA = openpyxl.load_workbook(premier)
wbB = openpyxl.load_workbook(second)
#identification des feuilles concernées
shA = wbA['Feuil1']
shB = wbB['Feuil1']
# un exemple de lecture de la valeur d'une cellule
valeurA = shA['C6'].value
print(valeurA)
# attribution d'une valeur à une cellule
shA['F13'] = 1292500
'''# recuperer la valeur et non la formule
transfert = shA['C5'].value
shA['G5'] = Translator("C5").translate_formula("G5")
print(shA['G5'].value)'''
# application d'un style
shA['F13'].font = openpyxl.styles.Font(name = 'Courier', size = 100, italic = True, bold = True, underline = 'single', color = 'FF5733')
# insérer une ligne en troisième position
shA.insert_rows(3)
# attribution d'une formule à une cellule
shA['A12'] = '=SUM(A1:A11)'
# on réupère la valeur A12 du fichier pour le placer en A14 dans un autre fichier
destinationB = shA['A12'].value
shB ['A14'] = destinationB
# derniere ligne
print("c est la derniere ligne = ",shA.max_row)
#enregistrement (maj) du fichier excel
wbA.save("A.xlsx")
wbB.save("B.xlsx")
« copier – coller » entre classeurs xlsx
import openpyxl as op
def copier_valeur(source, destination, cellule_source, cellule_destination):
# Charger le fichier source
#fichier_source = openpyxl.load_workbook(source)
fichier_source = openpyxl.load_workbook(source, data_only=True)
feuille_source = fichier_source.active
# Obtenir la valeur de la cellule source (sans la formule)
valeur_source = feuille_source[cellule_source].value
# Charger le fichier destination
fichier_destination = openpyxl.load_workbook(destination)
feuille_destination = fichier_destination.active
# Copier la valeur dans la cellule destination
feuille_destination[cellule_destination].value = valeur_source
# Enregistrer le fichier destination
fichier_destination.save(destination)
# Exemple d'utilisation
fichier_source = "./A.xlsx"
fichier_destination = "./B.xlsx"
cellule_source = "E1"
cellule_destination = "E2"
copier_valeur(fichier_source, fichier_destination, cellule_source, cellule_destination)
print(op.__version__)
ajouter des données « dans la première ligne vide »
import openpyxl
import datetime
from openpyxl.chart import BarChart, Reference, Series
def copier_valeur(source):
# Charger le fichier source
#fichier_source = openpyxl.load_workbook(source)
fichier_source = openpyxl.load_workbook(source, data_only=True)
#feuille_source = fichier_source.active
# Obtenir la valeur de la cellule source (sans la formule)
#valeur_source = feuille_source[cellule_source].value
# Charger le fichier destination
#fichier_destination = openpyxl.load_workbook(destination)
#feuille_destination = fichier_destination.active
# Copier la valeur dans la cellule destination
#feuille_destination[cellule_destination].value = valeur_source
# essayrer d'ajouter une ligne
mytime = datetime.datetime.now()
fichier_source['Feuille1'].append([111, 222, 3,mytime])
# Enregistrer le fichier destination
fichier_source.save("graphique.xlsx")
#fichier_destination.save(destination)
fichier_source.close()
# Exemple d'utilisation
fichier_source = "./graphique.xlsx"
#fichier_destination = "./graphique2.xlsx"
copier_valeur(fichier_source)
print(op.__version__)
Ajouter un graphique
import openpyxl
import datetime
from openpyxl.chart import BarChart, Reference, Series
fichier_source = "./graphique.xlsx"
fichier_source = openpyxl.load_workbook(fichier_source, data_only=True)
ws = fichier_source['Feuille1']
# plage de cellules contenant les labels : colonne A
labels = Reference(ws, min_col = 1, min_row = 1, max_row = 5)
# plage de cellules contenant les valeurs : colonne D
values = Reference(ws, min_col=2, min_row=2, max_row=5)
chart = BarChart() # on choisit un graphique à barres verticales
# ajout des valeurs pour les y
chart.add_data(values)
# mise à jour des labels sur le graphique
chart.set_categories(labels)
# choix du titre du graphique
chart.title = "Quantités de matériel en stock"
chart.legend = None # pas de légende
# ajout du graphique dans la feuille, avec le coin supérieur gauche du graphique positionné sur la cellule F2.
ws.add_chart(chart, "F2")
# Enregistrer le fichier destination
fichier_source.save("graphique.xlsx")
#fichier_destination.save(destination)
fichier_source.close()