Django和xlrd,从内存中读取

我的计划是让用户上传一个excel文件,一旦上传,我将显示包含上传excel内容的可编辑表格,一旦用户确认input正确,他/她点击保存button,这些项目被保存在一些模型。

为此,我写了这个观点和forms:

形成:

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从文件中读取,而不保存这个input到某个地方,我怎么读?

 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关键字。

快乐的编码。