openpyxl

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()

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *