Fonction - Mettre un DataFrame dans un fichier Excel existant
Bonjour,
J'ai fait une fonction qui me permet d'ajouter des données depuis un DataFrame à un fichier Excel.
- Lors du premier lancement, le fichier est créé et j'applique une couleur sur la première colonne.
- Le deuxième lancement est ok.
- Lors du troisième lancement, je perds la mise en forme (la couleur dans ce cas) sur les lignes précédentes (3 et 4).
Après le deuxième lancement, si j'ouvre le fichier (avec LibreOffice) et que je sauve, cela fonctionne correctement.
Avez-vous une idée qui me permettrait d'éviter cette manipulation ?
Merci
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import pandas as pd
import numpy as np
def ajoute_dataframe_a_xlsx(fichier, dataframe):
"""
Fonction qui permet d'ajouter un DataFrame dans un fichier Excel existant ou de le créer.
Le DataFrame est ajouté à la suite dans la page active.
S'il y a eu des mises en forme (taille des colonnes, en gras...), elles seront conservées.
:param fichier: Nom du fichier Excel
:param dataframe: Nom du DataFrame à enregistrer dans le classeur
"""
from openpyxl import load_workbook
dataframe_dans_liste = dataframe.values.tolist() # Mettre le DataFrame dans une liste de liste
try: # Test que le fichier existe
classeur = load_workbook(fichier) # Charger le fichier xlxs
except FileNotFoundError: # Si le fichier n'existe pas, il est créé.
from openpyxl.workbook import Workbook
classeur = Workbook()
page = classeur.active
for info in dataframe_dans_liste:
page.append(info)
classeur.save(filename=fichier)
# Pour teste
colonne = ['col 1', 'col 2', 'col 3']
ligne = [['test 1', 'test 2', 'test 3'], ['test 1', 'test 2', 'test 3']]
df = pd.DataFrame(data=np.array(ligne), columns=colonne)
ajoute_dataframe_a_xlsx('Test_fonction.xlsx', df) |