Mi plan es permitir que un usuario cargue un archivo excel, una vez cargado, mostraré un formulario editable que contiene el contenido del archivo excel cargado, una vez que el usuario confirme que la entrada es correcta, él/ella presiona el botón Guardar y estos elementos se guardan en algún modelo.Django y xlrd, leyendo de memoria
Para ello, he escrito este punto de vista y forma:
formulario:
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
vista:
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})
Como se puede ver en la # I need to open this input_excel with input_excel.open_workbook()
Necesito para leer desde la memoria pero open_workbook
lee de un archivo, sin guardar thi s entrada a algún lugar, ¿cómo puedo leerlo?
funcionando genial, gracias! – Hellnar
Para archivos Unicode, puede usar 'book = open_workbook (file_contents = input_excel.read(), encoding_override = 'utf8')' –