2017-07-11 1 views
1

J'essaye de formater un document Excel dans python que je crée dans le même script. Toutes les réponses que j'ai trouvées ont impliqué le chargement d'un classeur existant dans python et le formatage à partir de là. Dans mon script, j'écris actuellement la totalité de la feuille excel non formatée, en sauvegardant le fichier, puis en rechargeant immédiatement le document dans python pour le formater. C'est la seule solution de contournement que je peux trouver pour que je puisse avoir une feuille active. Ceci fonctionne pour changer des aspects tels que la largeur de colonne, mais je voudrais un moyen de formater la page sans enregistrer et recharger. Est-il possible de contourner le besoin d'une feuille active quand il n'y a pas encore de nom de fichier écrit? Je veux un moyen de supprimer les lignes 2 et 3, cependant cela peut être.Formatage Excel en python sans chargement de classeur

+0

http://xlsxwriter.readthedocs.io/format.html fait le travail, qui est la réponse d'Alan avec un moteur différent maintenant –

Répondre

1

L'objet créé par Pandas dans ExcelWriter dépend du "moteur" que vous lui attribuez. Dans ce cas, vous passez "openpyxl", donc ExcelWriter crée un objet openpyxl.Workbook(). Vous pouvez créer un nouveau classeur dans openpyxl en utilisant « Cahier d'exercices() » Comme si:

https://openpyxl.readthedocs.io/en/default/tutorial.html#create-a-workbook

Il est créé avec 1 feuille active. En gros:

import openpyxl 

wb = openpyxl.Workbook() 
ws=wb.active 
ws.column_dimensions['A'].width=33 
ws.column_dimensions['B'].width=16 
wb.save(file_name) 

... ferait le travail

1

Votre titre est trompeur: vous travaillez dans Pandas et le dumping vers Excel. Pandas autorise une certaine mise en forme mais, parce qu'il essaie de supporter différentes librairies Python (openpyxl, xlsxwriter et xlwt), il y a des restrictions sur ce point.

Pour openpyxl de contrôle complet fournit un support pour les objets de la dataframe Pandas: http://openpyxl.readthedocs.io/en/latest/pandas.html