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={}) # 필요에 따라 렌더링.
모델 등은 필요에 따라 구성하면 된다.