Utilisez le modèle jinja2 dans un fichier Excel

Contexte

Lors du développement d'un système, j'ai souvent l'occasion d'écrire un document écrit sous Excel. Dans certains cas, il est rarement nécessaire de créer un grand nombre de fichiers avec presque le même contenu que celui indiqué ci-dessous.

Manuel de procédure d'achat Yahyakuya.xlsx yaoya.png

Manuel de procédure d'achat de la poissonnerie. sakanaya.png

Les deux ci-dessus sont exactement les mêmes que le magasin que vous allez acheter, à l'exception de ce que vous achetez.

Dans un tel cas, il existe une méthode pour "créer un manuel de procédure d'achat Yahyakuya puis créer une version de la poissonnerie par remplacement de chaîne de caractères", mais dans certains cas, cela ne peut pas être réalisé avec la mauvaise fonction de remplacement d'Excel, donc un remplacement manuel pleurant ( Je pense qu'il existe de nombreux cas où la soi-disant main sed) est effectuée.

Par conséquent, openpyxl qui lit et écrit des fichiers xlsx à partir de Python et le moteur de modèle typique de Python jinja2 J'ai essayé d'utiliser / docs / dev /) pour générer le texte dans un fichier Excel avec un modèle.

https://gist.github.com/kokumura/c44970102e1f33685152

python


pyxl.py [Nom de fichier xlsx contenant le modèle jinja] [Nom du fichier de sortie] [Variable de modèle(YAML)]

En faisant cela, toutes les cellules de toutes les feuilles contenues dans le fichier xlsx d'origine seront analysées, le modèle jinja2 sera développé s'il est inclus et le résultat sera envoyé dans un autre fichier.

Comment utiliser

Tout d'abord, préparez le fichier modèle suivant à l'aide d'Excel. La grammaire est jinja2 elle-même.

template.xlsx template.png

Décrivez les variables utilisées dans le modèle en YAML.

yasai.yml


---
place:Yahyakuya
targets:
  - name:Mandarine
    num:  3
  - name:pomme
    num:  2
  - name:Carottes
    num:  1

sakana.yml


---
place:Poissonnerie
targets:
  - name:Sanma
    num:  2
  - name:Le calamar
    num:  1
  - name:Poulpe
    num:  1

En exécutant ce qui suit, "Yahyakuya shopping procedure manual.xlsx" et "Fish shop shopping procedure manual.xlsx" seront générés à partir des fichiers template.xlsx et YAML. Je suis heureux.

python xljj.py template.xlsx Yahyakuya Manuel de procédure d'achat.xlsx yasai.yml
python xljj.py template.procédure d'achat xlsx fish shop.xlsx sakana.yml

prime

openpyxl est étonnamment polyvalent, et si vous faites de votre mieux, vous pouvez changer le style et ainsi de suite. Cependant, la documentation n'est pas très complète, vous devrez donc parfois être prêt à appeler des fonctionnalités ou des méthodes privées qui ne sont pas spécifiées dans la documentation.

Vous trouverez ci-dessous une fonction qui effectue automatiquement une autre tâche courante: "Ouvrez un fichier Excel, sélectionnez la cellule" A1 "sur toutes les feuilles, passez à la première feuille, puis enregistrez."

from openpyxl import load_workbook
import openpyxl.worksheet.views

def select_a1(workbook_path):
    wb = load_workbook(workbook_path)
    wb._active_sheet_index = 0
    for ws in wb.worksheets:
        ws.sheet_view.selection = (openpyxl.worksheet.views.Selection(),)
    wb.save(workbook_path)

Recommended Posts

Utilisez le modèle jinja2 dans un fichier Excel
Comment utiliser le moteur de modèle dans une application de fichier de Pyramid
Utiliser Jinja2 pour le moteur de modèle PasteScript
Utilisation du fichier de contraintes ajouté dans pip 7.1
(Remarque) Ordre de recherche des fichiers modèles dans Django
[Python] Automatisation implémentée pour la copie de fichiers Excel
Organiser les fichiers de modèle Django
Opérations sur les fichiers en Python
Utilisez config.ini avec Python
Traitement de fichiers en Python
Utiliser DataFrame en Java
Utiliser des dates en Python
Utiliser Mean avec DataFrame
Utiliser Valgrind avec Python
Manipulation de fichiers avec Python
Utiliser ujson dans les requêtes
Moteur de template Jinja2 2 Python
Programmation Python avec Excel
Utiliser le profileur en Python
[Python] Comment changer le fichier EXCEL enregistré dans xlsb en xlsx
Convertir un fichier Excel en texte en Python à des fins de comparaison
Voyons comment utiliser def en python
Utiliser l'expression let en Python
Utiliser Anaconda dans un environnement pyenv
Utiliser le protocole de mesure avec Python
Utiliser la fonction de rappel en Python
Utiliser le magasin de paramètres en Python
Utiliser le cache HTTP en Python
Utiliser des expressions régulières en C
Utilisez l'ODM de MongoDB avec Python
Utiliser un dict clé de liste en Python
Utiliser Random Forest avec Python
Utilisez Spyder de Python IDE
Modèle de méthode de modèle en Java
Utilisons Juman ++ en mode serveur
Afficher le fichier JSON japonais
-Solution pour l'adresse déjà utilisée
Afficher Django ManyToManyField dans un modèle
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python