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
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
Dieses Mal werde ich ein Modul vorstellen, das für die Anwendung mit einem etwas anderen Geschmack geeignet 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/)
Openpyxl kann nur mit pip installiert werden
$ pip install openpyxl
Bereiten Sie die folgende Vorlage vor (Der Teil in Rot ist ein Beispielmakro)
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.
Sie können die Excel-Datei herunterladen, indem Sie die unten angegebene URL direkt angeben. (Direkt im Download-Ordner des Clients gespeichert)
Wenn Sie die heruntergeladene Excel-Datei öffnen Ja, ich habe es geschafft, diese Art von Daten anzuzeigen
Recommended Posts