"장고 엑셀 파일 올리기"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(새 문서: == 개요 == 엑셀 파일을 올려 사용하기 위함. 엑셀파일을 올려 media에 저장하는 방법이 아니라, 엑셀 파일로부터 데이터를 받는 방법에 대...) |
|||
6번째 줄: | 6번째 줄: | ||
=== 시작 전 준비. 엑셀 핸들링 라이브러리 설치 === | === 시작 전 준비. 엑셀 핸들링 라이브러리 설치 === | ||
엑셀을 핸들링하는 다양한 라이브러리들이 있다. 취향에 맞는 걸 활용하면 OK. | 엑셀을 핸들링하는 다양한 라이브러리들이 있다. 취향에 맞는 걸 활용하면 OK. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | 라이브러리 종류는 [[:분류:엑셀 헨들링|분류:엑셀 헨들링]]을 참고하자. | ||
= 구현 = | = 구현 = | ||
2022년 8월 25일 (목) 08:58 판
1 개요
엑셀 파일을 올려 사용하기 위함.
엑셀파일을 올려 media에 저장하는 방법이 아니라, 엑셀 파일로부터 데이터를 받는 방법에 대해 안내한다.
1.1 시작 전 준비. 엑셀 핸들링 라이브러리 설치
엑셀을 핸들링하는 다양한 라이브러리들이 있다. 취향에 맞는 걸 활용하면 OK.
라이브러리 종류는 분류:엑셀 헨들링을 참고하자.
2 구현
2.1 탬플릿
<form action="{% url '앱이름:uploadFile' %}" method="POST" enctype="multipart/form-data">
<input type="file" name="uploadedFile">
{% csrf_token %}
<input type="submit" value="Upload">
</form>
2.2 뷰
from django.shortcuts import render
import openpyxl # 취향에 맞는 핸들러로 조작한다.
from . import models
def uploadFile(request):
if request.method == "POST":
uploadedFile = request.FILES["uploadedFile"] # post요청 안의 name속성으로 찾는다.
excel = openpyxl.load_workbook(uploadedFile, data_only=True) # 파일을 핸들러로 읽는다.
work_sheet = excel.work_sheet[0] # 첫번째 워크시트를 사용한다.
# 엑셀 데이터를 리스트 처리한다.
work_sheet_data = []
for row in work_sheet.rows: # 열을 순회한다.
row_data = [] # 열 데이터를 담기 위한 리스트
for cell in row:
row_data.append(cell.value) # 셀 값을 하나씩 리스트에 담는다.
work_sheet_data.append(row_data) # 워크시트 리스트 안에 열 리스트를 담아...
# work_sheet_data[열번호][행번호] 형태로 엑셀의 데이터에 접근할 수 있게 된다.
for row in work_sheet_data: # 데이터의 열을 순회하며...
모델 = models.모델(속성=row[행번호], 속성2=row[행번호2], ...) # 데이터를 모델에 담는다.
모델.save()
return render(request, ".html", context={}) # 필요에 따라 렌더링.
모델 등은 필요에 따라 구성하면 된다.