반응형
장고와 xlrd, 메모리에서 읽기
사용자가 엑셀 파일을 업로드 할 수 있도록 하고 업로드한 엑셀의 내용을 담은 편집 가능한 폼을 표시하고 입력이 맞는지 확인하면 저장 버튼을 눌러 일부 모델에 저장합니다.
이를 위해 저는 다음과 같은 보기와 양식을 작성했습니다.
폼:
IMPORT_FILE_TYPES = ['.xls', ]
class XlsInputForm(forms.Form):
input_excel = forms.FileField(required= True, label= u"Upload the Excel file to import to the system.")
def clean_input_excel(self):
input_excel = self.cleaned_data['input_excel']
extension = os.path.splitext( input_excel.name )[1]
if not (extension in IMPORT_FILE_TYPES):
raise forms.ValidationError( u'%s is not a valid excel file. Please make sure your input file is an excel file (Excel 2007 is NOT supported.' % extension )
else:
return input_excel
표시:
def import_excel_view(request):
if request.method == 'POST':
form = XlsInputForm(request.POST, request.FILES)
if form.is_valid():
input_excel = request.FILES['input_excel']
# I need to open this input_excel with input_excel.open_workbook()
return render_to_response('import_excel.html', {'rows': rows})
else:
form = XlsInputForm()
return render_to_response('import_excel.html', {'form': form})
에서 볼 수 있듯이# I need to open this input_excel with input_excel.open_workbook()
기억을 더듬어 읽어야 하는데open_workbook
이 입력을 다른 곳에 저장하지 않고 파일에서 읽습니다.어떻게 읽으면 좋을까요?
if form.is_valid():
input_excel = request.FILES['input_excel']
book = xlrd.open_workbook(file_contents=input_excel.read())
# your work with workbook 'book'
return render_to_response('import_excel.html', {'rows': rows})
언제file_contents
옵션의 키워드를 지정합니다.filename
키워드는 사용되지 않습니다.
해피 코딩
언급URL : https://stackoverflow.com/questions/3665379/django-and-xlrd-reading-from-memory
반응형
'programing' 카테고리의 다른 글
PowerShell에서 콘솔 출력 억제 (0) | 2023.04.21 |
---|---|
WPF 라벨액셀러레이터 키 비활성화(텍스트 밑줄 누락) (0) | 2023.04.21 |
git에서 푸시하려는 내용을 보려면 어떻게 해야 합니까? (0) | 2023.04.21 |
파일 이름 문자열에서 파일 확장자 제거 (0) | 2023.04.21 |
SQL, PL-SQL 및 T-SQL의 차이점은 무엇입니까? (0) | 2023.04.21 |