J'utilise des pandas pour écrire dans un fichier Excel de la manière suivante:
import pandas
writer = pandas.ExcelWriter('Masterfile.xlsx')
data_filtered.to_excel(writer, "Main", cols=['Diff1', 'Diff2'])
writer.save()
Masterfile.xlsx se compose déjà de plusieurs onglets différents. Cependant, il ne contient pas encore "Main".
Pandas écrit correctement dans la feuille "Main", malheureusement il supprime également tous les autres onglets.
ExcelReader
Réponses:
La documentation Pandas dit qu'elle utilise openpyxl pour les fichiers xlsx. Un rapide coup d'œil à travers le code
ExcelWriter
donne un indice que quelque chose comme ça pourrait fonctionner:la source
openpyxl
, y ajouter des balises et fournir suffisamment de détails: de quel type de formules disposez-vous, comment les données sont mises à jour, comment cela freine les formules. Maintenant, je ne peux pas m'empêcher, trop de choses que je ne sais pas.Voici une fonction d'assistance:
REMARQUE: pour Pandas <0.21.0, remplacez
sheet_name
parsheetname
!Exemples d'utilisation:
la source
Avec la
openpyxl
version2.4.0
et lapandas
version0.19.2
, le processus proposé par @ski devient un peu plus simple:la source
À partir de pandas 0.24, vous pouvez simplifier cela avec l'
mode
argument mot - clé deExcelWriter
:la source
mode = 'a'
ajoute plus de feuilles, mais que faire si je veux écraser les données sur les feuilles existantes?Ancienne question, mais je suppose que certaines personnes recherchent toujours cela - alors ...
Je trouve cette méthode agréable car toutes les feuilles de calcul sont chargées dans un dictionnaire de paires de noms de feuilles et de cadres de données, créé par des pandas avec l'option sheetname = None. Il est simple d'ajouter, de supprimer ou de modifier des feuilles de calcul entre la lecture de la feuille de calcul au format dict et sa réécriture à partir du dict. Pour moi, le xlsxwriter fonctionne mieux que openpyxl pour cette tâche particulière en termes de vitesse et de format.
Remarque: les futures versions de pandas (0.21.0+) changeront le paramètre "sheetname" en "sheet_name".
Pour l'exemple de la question de 2013:
la source
Je sais qu'il s'agit d'un fil de discussion plus ancien, mais c'est le premier élément que vous trouvez lors de la recherche, et les solutions ci-dessus ne fonctionnent pas si vous devez conserver des graphiques dans un classeur que vous avez déjà créé. Dans ce cas, xlwings est une meilleure option - il vous permet d'écrire dans le livre Excel et de conserver les graphiques / données des graphiques.
exemple simple:
la source
Il existe une meilleure solution dans pandas 0.24:
avant:
après:
alors améliorez vos pandas maintenant:
la source
XslxWriter
option.engine=openpyxl
car il ajoutera simplement une nouvelle feuille de calcul appeléethe only worksheet1
Cela fonctionne parfaitement bien, la seule chose est que le formatage du fichier maître (fichier auquel nous ajoutons une nouvelle feuille) est perdu.
la source
L'espoir "keep_date_col" vous aidera
la source
la source
Méthode:
Usage:
la source