Web-WF Python Tornado Teil 3 (Einführung in Openpyexcel)

Einführung

Als webServer APIServer möchte ich Tornado, das einfach und ausgezeichnet ist (glaube ich), in mehreren Teilen vorstellen.

[Web-WF Python Tornado Teil 1] (https://qiita.com/sin_hayasi/private/c5af3b21e7abda196cfd) [Web-WF Python Tornado Teil 2] (https://qiita.com/sin_hayasi/private/bdc4f45b092ed5433aec) Web-WF Python Tornado Teil 3 (Dieser Artikel

Ziel

Full-Stack-Ingenieur, Frontingenieur, Person, die Python mag, Person, die Teil 1 und Teil 2 liest, Person, die gezwungen war, Material mit Excel auszugeben

Python3.6 oder höher, Tornado installiert

Tor

Dieses Mal werde ich ein Modul vorstellen, das für die Anwendung mit einem etwas anderen Geschmack geeignet ist. (Openpyxl)

Was ist Openpyxl?

Ein Modul, das Excel-Dateien aus Python lesen, schreiben und bearbeiten kann Es ist praktisch, das aggregierte Ergebnis als Bericht in Excel auszugeben oder umgekehrt Excel-Daten zu importieren. Dieses Mal werde ich ein Muster erstellen, um die Rechnung auszugeben [Offiziell hier] (https://openpyxl.readthedocs.io/en/stable/)

Installation

Openpyxl kann nur mit pip installiert werden

$ pip install openpyxl

Vorbereitung der Excel-Vorlage

Bereiten Sie die folgende Vorlage vor (Der Teil in Rot ist ein Beispielmakro) スクリーンショット 2020-08-24 18.43.28.png

Quellcode

Fügen Sie die folgenden Quellen zu den in Teil 1 und Teil 2 eingeführten Quellen hinzu.

main.py


import os
import datetime
import openpyxl as px
from openpyxl.writer.excel import save_virtual_workbook

class prtInvoice(tornado.web.RequestHandler):
    def get(self):
        #Laden Sie die Rechnungsvorlage
        wb = px.load_workbook(BASE_DIR+u'/template.xlsx')
        ws = wb.active
        #Geben Sie den Druckbereich an
        ws.page_setup.fitToWidth = 1
        ws.page_setup.fitToHeight = 0
        ws.sheet_properties.pageSetUpPr.fitToPage = True
        #Bereiten Sie ein solches Modell vor (tatsächlich aus der Datenbank usw.).
        model = {
            'companyName': 'Testfirma',
            'items': [
                {'itemName': 'Produkt A.', 'price': 1000, 'quantity': 1},
                {'itemName': 'Produkt B.', 'price': 2000, 'quantity': 2},
                {'itemName': 'Produkt C.', 'price': 3000, 'quantity': 3}
            ]
        }

        #Stellen Sie das heutige Datum ein
        #F2 ist die Zelle Excel-Zelle
        dt_now = datetime.datetime.now()
        ws['F2'] = dt_now.strftime("%Y Jahr%m Monat 〆Tag")
        #Firmennamen einstellen
        ws['B7'] = '{0}Du'.format(model['companyName'])
        for i, item in enumerate(model['items']):
            #Stellen Sie den Produktnamen ein
            ws['B'+str(i+25)] = '  {0}'.format(item['itemName'])
            #Menge einstellen
            ws['D'+str(i+25)] = item['quantity']
            #Stückpreis einstellen
            ws['E'+str(i+25)] = item['price']

        #Im Excel-Format herunterladen
        self.set_header('Cache-Control',
                        'no-store, no-cache, must-revalidate, max-age=0')
        self.set_header(
            'Content-Type', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        fileName = "Invoice.xlsx"
        self.set_header('Content-Disposition',
                        "attachment; filename=\"{}\"".format(fileName))
        self.write(save_virtual_workbook(wb))

def make_app():
    return tornado.web.Application(
        [
        (r"/html", htmlHandler),
        (r"/json", jsonHandler),
        (r"/excel", prtInvoice),
        ],
        debug=True,
    )
ws['B7'] = 'Hello'

Die Funktion dieses Moduls besteht darin, dass Sie Daten in solchen Excel-Zellen festlegen und lesen können.

Ausführen und durchsuchen

Sie können die Excel-Datei herunterladen, indem Sie die unten angegebene URL direkt angeben. (Direkt im Download-Ordner des Clients gespeichert)

スクリーンショット 2020-08-24 18.54.22.png

Wenn Sie die heruntergeladene Excel-Datei öffnen スクリーンショット 2020-08-24 18.56.04.png Ja, ich habe es geschafft, diese Art von Daten anzuzeigen

Recommended Posts

Web-WF Python Tornado Teil 3 (Einführung in Openpyexcel)
Einführung in Python Hands On Teil 1
Einführung in die Python-Sprache
Einführung in OpenCV (Python) - (2)
Einführung in PyQt4 Teil 1
Einführung in Tornado (1): Python Web Framework mit Tornado gestartet
Einführung in Python Django (2) Win
Einführung in die serielle Kommunikation [Python]
[Einführung in Python] <Liste> [Bearbeiten: 22.02.2020]
Einführung in Python (Python-Version APG4b)
Eine Einführung in die Python-Programmierung
Einführung in Ansible Teil In'Inventory '
Einführung in Python For, While
Einführung in Python numpy pandas matplotlib (für ~ B3 ~ part2)
Einführung in Ansible Teil ④'Variable '
[Einführung in cx_Oracle] (Teil 6) Zuordnung von DB- und Python-Datentypen
Einführung in Python, die auch Affen verstehen können (Teil 3)
Einführung in Python Scikit-Learn, Matplotlib, Single-Layer-Algorithmus (~ in Richtung B3 ~ Teil3)
Einführung in Python, die auch Affen verstehen können (Teil 1)
Einführung in Python, die auch Affen verstehen können (Teil 2)
[Einführung in die Udemy Python3 + -Anwendung] 58. Lambda
[Einführung in die Udemy Python3 + -Anwendung] 31. Kommentar
Einführung in die Python Numerical Calculation Library NumPy
Trainieren! !! Einführung in Python Type (Type Hints)
[Einführung in Python] <numpy ndarray> [edit: 2020/02/22]
[Einführung in die Udemy Python3 + -Anwendung] 57. Decorator
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
[Einführung in Python] So analysieren Sie JSON
[Einführung in die Udemy Python3 + -Anwendung] 56. Abschluss
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
Einführung in Protobuf-c (C-Sprache ⇔ Python)
[Einführung in die Udemy Python3 + -Anwendung] 59. Generator
[Einführung in Python3 Tag 15] Kapitel 7 Zeichenfolgen (7.1.2-7.1.2.2)
[Einführung in Python] Verwenden wir Pandas
[Einführung in Python] Verwenden wir Pandas
[Einführung in die Udemy Python3 + -Anwendung] Zusammenfassung
Einführung in die Bildanalyse opencv python
[Einführung in Python] Verwenden wir Pandas
Erste Schritte mit Python für Nicht-Ingenieure
Einführung in Python Django (2) Mac Edition
Einführung in Ansible Teil 1'Hallo Welt !! '
[AWS SAM] Einführung in die Python-Version
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
[Python Tutorial] Eine einfache Einführung in Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part4-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
[Einführung in die Udemy Python3 + -Anwendung] 18. Listenmethode
[Einführung in die Udemy Python3 + -Anwendung] 28. Kollektiver Typ
[Einführung in Python] Wie verwende ich eine Klasse in Python?
[Einführung in die Udemy Python3 + -Anwendung] 25. Wörterbuchmethode
[Einführung in die Udemy Python3 + -Anwendung] 33. if-Anweisung
Einführung in die diskrete Ereignissimulation mit Python # 1
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
[Einführung in die Udemy Python3 + -Anwendung] 55. In-Function-Funktionen
[Einführung in die Udemy Python3 + -Anwendung] 48. Funktionsdefinition
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
Python Bit Arithmetic Super Einführung
[Einführung in die Udemy Python3 + -Anwendung] 10. Numerischer Wert
[Einführung in die Udemy Python3 + -Anwendung] 21. Taple-Typ
[Einführung in die Udemy Python3 + -Anwendung] 45. Aufzählungsfunktion