Web-WF Python Tornado의 3 (Openpyexcel의 소개)
개시하다
웹 서버 APIServer로서 간단하고 우수한 Tornado를 몇 번에 걸쳐 소개하고 싶습니다.
Web-WF Python Tornado 중 하나
Web-WF Python Tornado의 두 번째
Web-WF Pythhon Tornado의 3
대상
모든 스태프, 엔지니어, 파이톤을 좋아하는 사람, 그중 1, 2를 읽은 사람, Excel에서 자료를 출력해야 하는 사람
Python3.6개 이상의 tornado가 설치되어 있습니다.
골대
이번에는 아이디어를 조금 바꿔서 앱에서 편리한 모듈을 소개할게요.
(Openpyxl)
Openpyxl 소개
python에서 Excel 파일을 읽고 편집할 수 있는 모듈
합계 결과를 Excel로 출력하여 Excel 데이터를 거꾸로 가져오는 것이 편리함
이번에 수출 명세서의 샘플을 제작하다
정부 측
설치하다.
pip만 설치$ pip install openpyxl
excel 템플릿 준비
다음 템플릿 준비
(손실 부분은 매크로 샘플)
소스 코드
이 중 1, 2에 소개된 소스에 다음 소스를 첨가한다.
main.pyimport os
import datetime
import openpyxl as px
from openpyxl.writer.excel import save_virtual_workbook
class prtInvoice(tornado.web.RequestHandler):
def get(self):
# 請求書のtemplateをLoad
wb = px.load_workbook(BASE_DIR+u'/template.xlsx')
ws = wb.active
# 印刷範囲を指定
ws.page_setup.fitToWidth = 1
ws.page_setup.fitToHeight = 0
ws.sheet_properties.pageSetUpPr.fitToPage = True
# こんなmodelを準備(実際にはDBなどから
model = {
'companyName': 'テスト会社',
'items': [
{'itemName': '商品A', 'price': 1000, 'quantity': 1},
{'itemName': '商品B', 'price': 2000, 'quantity': 2},
{'itemName': '商品C', 'price': 3000, 'quantity': 3}
]
}
# 今日の日付をセット
# F2はセルのExcelのセル
dt_now = datetime.datetime.now()
ws['F2'] = dt_now.strftime("%Y 年 %m 月 〆 日")
# 会社名をセット
ws['B7'] = '{0} 御中'.format(model['companyName'])
for i, item in enumerate(model['items']):
# 商品名をセット
ws['B'+str(i+25)] = ' {0}'.format(item['itemName'])
# 数量をセット
ws['D'+str(i+25)] = item['quantity']
# 単価をセット
ws['E'+str(i+25)] = item['price']
# 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'
이렇게 하면 Excel의 셀에 데이터를 설정할 수 있으며 데이터를 읽는 것이 이 모듈의 특징이다
실행 및 찾아보기
URL을 직접 지정하여 Excel 파일을 다운로드할 수 있습니다.
(클라이언트 다운로드 폴더에 직접 저장)
다운로드한 Excel 파일을 열면
네, 드디어 그런 데이터가 나왔어요.
Reference
이 문제에 관하여(Web-WF Python Tornado의 3 (Openpyexcel의 소개)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sin_hayasi/items/55b4314f3190cdf2f2ec
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
python에서 Excel 파일을 읽고 편집할 수 있는 모듈
합계 결과를 Excel로 출력하여 Excel 데이터를 거꾸로 가져오는 것이 편리함
이번에 수출 명세서의 샘플을 제작하다
정부 측
설치하다.
pip만 설치
$ pip install openpyxl
excel 템플릿 준비
다음 템플릿 준비
(손실 부분은 매크로 샘플)
소스 코드
이 중 1, 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):
# 請求書のtemplateをLoad
wb = px.load_workbook(BASE_DIR+u'/template.xlsx')
ws = wb.active
# 印刷範囲を指定
ws.page_setup.fitToWidth = 1
ws.page_setup.fitToHeight = 0
ws.sheet_properties.pageSetUpPr.fitToPage = True
# こんなmodelを準備(実際にはDBなどから
model = {
'companyName': 'テスト会社',
'items': [
{'itemName': '商品A', 'price': 1000, 'quantity': 1},
{'itemName': '商品B', 'price': 2000, 'quantity': 2},
{'itemName': '商品C', 'price': 3000, 'quantity': 3}
]
}
# 今日の日付をセット
# F2はセルのExcelのセル
dt_now = datetime.datetime.now()
ws['F2'] = dt_now.strftime("%Y 年 %m 月 〆 日")
# 会社名をセット
ws['B7'] = '{0} 御中'.format(model['companyName'])
for i, item in enumerate(model['items']):
# 商品名をセット
ws['B'+str(i+25)] = ' {0}'.format(item['itemName'])
# 数量をセット
ws['D'+str(i+25)] = item['quantity']
# 単価をセット
ws['E'+str(i+25)] = item['price']
# 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'
이렇게 하면 Excel의 셀에 데이터를 설정할 수 있으며 데이터를 읽는 것이 이 모듈의 특징이다실행 및 찾아보기
URL을 직접 지정하여 Excel 파일을 다운로드할 수 있습니다.
(클라이언트 다운로드 폴더에 직접 저장)
다운로드한 Excel 파일을 열면
네, 드디어 그런 데이터가 나왔어요.
Reference
이 문제에 관하여(Web-WF Python Tornado의 3 (Openpyexcel의 소개)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sin_hayasi/items/55b4314f3190cdf2f2ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)