En tant que serveur Web APIServer, je voudrais vous présenter Tornado, qui est facile et excellent (je pense), en plusieurs parties.
[Web-WF Python Tornado Partie 1] (https://qiita.com/sin_hayasi/private/c5af3b21e7abda196cfd) [Web-WF Python Tornado Partie 2] (https://qiita.com/sin_hayasi/private/bdc4f45b092ed5433aec) Web-WF Python Tornado Partie 3 (Cet article
Ingénieur full stack, ingénieur front, personne qui aime Python, personne qui a lu la partie 1 et la partie 2, personne qui a été forcée de produire du matériel avec Excel
Python3.6 ou supérieur, tornado installé
Cette fois, je vais présenter un module qu'il est pratique d'avoir dans l'application avec un goût légèrement différent (Openpyxl)
Un module qui peut lire, écrire et éditer des fichiers Excel à partir de python Il est pratique de sortir le résultat agrégé sous forme de rapport dans Excel ou, au contraire, d'importer des données Excel. Cette fois, je vais créer un échantillon pour sortir la facture [Officiel ici] (https://openpyxl.readthedocs.io/en/stable/)
Openpyxl ne peut être installé qu'avec pip
$ pip install openpyxl
Préparez le modèle suivant (La partie en rouge est un exemple de macro)
Ajoutez les sources suivantes aux sources présentées dans les parties 1 et 2.
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):
#Chargez le modèle de facture
wb = px.load_workbook(BASE_DIR+u'/template.xlsx')
ws = wb.active
#Spécifiez la plage d'impression
ws.page_setup.fitToWidth = 1
ws.page_setup.fitToHeight = 0
ws.sheet_properties.pageSetUpPr.fitToPage = True
#Préparez un tel modèle (en fait à partir de DB, etc.
model = {
'companyName': 'Société de test',
'items': [
{'itemName': 'Produit A', 'price': 1000, 'quantity': 1},
{'itemName': 'Produit B', 'price': 2000, 'quantity': 2},
{'itemName': 'Produit C', 'price': 3000, 'quantity': 3}
]
}
#Régler la date du jour
#F2 est la cellule Excel de la cellule
dt_now = datetime.datetime.now()
ws['F2'] = dt_now.strftime("%Y année%m mois 〆jour")
#Définir le nom de l'entreprise
ws['B7'] = '{0}Tu'.format(model['companyName'])
for i, item in enumerate(model['items']):
#Définissez le nom du produit
ws['B'+str(i+25)] = ' {0}'.format(item['itemName'])
#Définir la quantité
ws['D'+str(i+25)] = item['quantity']
#Fixer le prix unitaire
ws['E'+str(i+25)] = item['price']
#Télécharger au format Excel
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'
La fonctionnalité de ce module est que vous pouvez définir et lire des données dans des cellules Excel comme celle-ci.
Vous pouvez télécharger le fichier Excel en spécifiant directement l'URL comme indiqué ci-dessous. (Enregistré directement dans le dossier de téléchargement du client)
Lorsque vous ouvrez le fichier Excel téléchargé Oui, j'ai réussi à afficher ce genre de données
Recommended Posts