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 : Sélectionner tout - Visualiser dans une fenêtre à part
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)