[PYTHON] Verwenden Sie die jinja2-Vorlage in einer Excel-Datei

Hintergrund

Bei der Entwicklung eines Systems habe ich oft die Möglichkeit, ein in Excel geschriebenes Dokument zu schreiben. In einigen Fällen ist es selten erforderlich, eine große Anzahl von Dateien mit fast demselben Inhalt wie unten gezeigt zu erstellen.

Yahyakuya Shopping Procedure Manual.xlsx yaoya.png

Einkaufsverfahren für Fischgeschäfte manual.xlsx sakanaya.png

Die beiden oben genannten sind genau die gleichen wie das Geschäft, das Sie kaufen, mit Ausnahme dessen, was Sie kaufen.

In einem solchen Fall gibt es eine Methode, "ein Yahyakuya-Einkaufsverfahren-Handbuch zu erstellen und dann eine Fischgeschäft-Version durch Ersetzen von Zeichenketten zu erstellen", aber in einigen Fällen kann dies mit der schlechten Ersetzungsfunktion von Excel nicht realisiert werden, so dass manuelles Ersetzen weint Ich denke, dass es viele Fälle gibt, in denen die sogenannte Hand sed) durchgeführt wird.

Daher openpyxl, das xlsx-Dateien aus Python und Pythons typischer Template-Engine [jinja2] liest und schreibt (http://jinja.pocoo.org) Ich habe versucht, mit / docs / dev /) den Text in einer Excel-Datei mit einer Vorlage zu generieren.

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

python


pyxl.py [Xlsx-Dateiname mit der Jinja-Vorlage] [Name der Ausgabedatei] [Vorlagenvariable(YAML)]

Auf diese Weise werden alle Zellen aller in der ursprünglichen xlsx-Datei enthaltenen Blätter gescannt, die jinja2-Vorlage wird erweitert, wenn sie enthalten ist, und das Ergebnis wird in eine andere Datei ausgegeben.

Wie benutzt man

Bereiten Sie zunächst die folgende Vorlagendatei mit Excel vor. Die Grammatik ist jinja2 selbst.

template.xlsx template.png

Beschreiben Sie die in der Vorlage in YAML verwendeten Variablen.

yasai.yml


---
place:Yahyakuya
targets:
  - name:Mandarine
    num:  3
  - name:Apfel
    num:  2
  - name:Karotte
    num:  1

sakana.yml


---
place:Fisch-laden
targets:
  - name:Sanma
    num:  2
  - name:Der Tintenfisch
    num:  1
  - name:Tintenfisch
    num:  1

Durch Ausführen der folgenden Schritte werden "Yahyakuya Shopping Procedure Manual.xlsx" und "Fish Shop Shopping Procedure Manual.xlsx" aus den Dateien template.xlsx und YAML generiert. Ich bin glücklich.

python xljj.py template.xlsx Yahyakuya Einkaufshandbuch.xlsx yasai.yml
python xljj.py template.xlsx Fischgeschäft Einkaufsverfahren.xlsx sakana.yml

Bonus

openpyxl ist unerwartet vielseitig und wenn Sie Ihr Bestes geben, können Sie den Stil ändern und so weiter. Die Dokumentation ist jedoch nicht sehr umfangreich. Daher müssen Sie manchmal darauf vorbereitet sein, Funktionen oder private Methoden aufzurufen, die nicht in der Dokumentation angegeben sind.

Im Folgenden finden Sie eine Funktion, die automatisch eine weitere allgemeine Aufgabe ausführt: "Öffnen Sie eine Excel-Datei, wählen Sie auf allen Blättern die Zelle" A1 "aus, wechseln Sie zum ersten Blatt und speichern Sie sie."

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

Verwenden Sie die jinja2-Vorlage in einer Excel-Datei
Verwendung der Template-Engine in einer Dateianwendung von Pyramid
Verwenden Sie Jinja2 für die PasteScript-Vorlagen-Engine
Verwendung der in Pip 7.1 hinzugefügten Einschränkungsdatei
(Hinweis) Suchreihenfolge der Vorlagendateien in Django
[Python] Automatisierung zum Kopieren von Excel-Dateien implementiert
Organisieren Sie Django-Vorlagendateien
Dateioperationen in Python
Verwenden Sie config.ini mit Python
Dateiverarbeitung in Python
Verwenden Sie DataFrame in Java
Verwenden Sie Datumsangaben in Python
Verwenden Sie Mean mit DataFrame
Verwenden Sie Valgrind mit Python
Dateimanipulation mit Python
Verwenden Sie ujson in Anfragen
Jinja2 | Python-Vorlagen-Engine
Python-Programmierung mit Excel
Verwenden Sie den Profiler in Python
[Python] So ändern Sie die in xlsb gespeicherte EXCEL-Datei in xlsx
Konvertieren Sie eine Excel-Datei für verschiedene Zwecke in Python in Text
Mal sehen, wie def in Python verwendet wird
Verwenden Sie den let-Ausdruck in Python
Verwenden Sie Anaconda in einer Pyenv-Umgebung
Verwenden Sie das Messprotokoll mit Python
Verwenden Sie die Rückruffunktion in Python
Verwenden Sie den Parameterspeicher in Python
Verwenden Sie den HTTP-Cache in Python
Verwenden Sie reguläre Ausdrücke in C.
Verwenden Sie in Python ein Diktat mit Listenschlüssel
Verwenden Sie Random Forest mit Python
Verwenden Sie Spyder von Python IDE
Muster der Vorlagenmethode in Java
Verwenden wir Juman ++ im Servermodus
Japanische JSON-Datei anzeigen
-Lösung für bereits verwendete Adresse
Zeigen Sie Django ManyToManyField in der Vorlage
[Python] Wenn Sie alle Variablen in einer anderen Datei verwenden möchten
Rufen Sie die Formel in der Excel-Datei als Zeichenfolge in Python ab