settings.py
# 엑셀 파일 업로드 핸들러
FILE_UPLOAD_HANDLERS = ("django_excel.ExcelMemoryFileUploadHandler",
"django_excel.TemporaryExcelFileUploadHandler")
bash
pip install django-excel # 엑셀을 데이터베이스에 매핑 시키는 라이브러리
pip insrtall openpyxl # 엑셀 crud 라이브러리
pip install pyexcel-xlsx # xlsx 확장자를 다루는 라이브러리 (csv xls 도 있음)
views.py
# 엑셀을 생성 및 행 추가 (여기서는 행 단위 추가만 함 열만 추가하는건 검색 바람 )
from openpyxl import Workbook # 엑셀을 만드는 api (엑셀 미설치 시에도 동작)
from io import BytesIO # 엑셀 파일을 전송 할 수 있도록 바이트 배열로 변환
wb = Workbook() # 엑셀 생성
ws = wb.active # 엑셀 활성화
excelfile = BytesIO() #바이트 배열 생성
ws['A1']= 'company' # 엑셀 a1 열 이름 정하기
ws['B1']= 'product'
ws['C1']= 'count'
for i in text: # text 는 db 에 저장된 내용 전체
content=[i.company,i.product_name,i.count] #리스트 형태로 1 행씩 생성(a1, b1, c1) 에 각각
ws.append(content) # 엑셀에 1행을 추가
wb.close() #엑셀 닫기
wb.save(excelfile) # 바이트배열로 저장 (mail 전송 하려면 바이트형태로 변환 되어야 함)
# 엑셀을 input tag 로 입력받아 db에 저장 하는 코드
request.FILES['files'].save_to_database(
model = Order, #매핑 대상 db
mapdict= ['company', 'product_name', 'count','emails'] # 칼럼에 매핑
'Django' 카테고리의 다른 글
Django Framework (0) | 2020.06.22 |
---|---|
Django dbsqlite3 오류 (0) | 2019.09.23 |
django email 라이브러리 (0) | 2019.09.23 |
Django 명령어 모음 (0) | 2019.09.23 |