2011-05-16 25 views
5

al tratar de generar archivos MS Excel generados dinámicamente utilizando django y xlwt. Estoy intentando usar xlwt para crear archivos MS-Excel a partir del contenido de la base de datos en mi sitio django.Se produce un error en Internet Explorer

he visto varias soluciones aquí en stackoverflow, en particular, este enlace: django excel xlwt

y esto Django fragmento: http://djangosnippets.org/snippets/2233/

Estos ejemplos funcionan en Firefox, pero no en Internet Explorer. En lugar de que se le pida que abra o guarde un archivo, aparece un montón de basura en la pantalla. Parece que IE cree que la respuesta es html.

Aquí es mi punto de vista la función:

def exportexcel(request): 
    from xlwt import Workbook 

    wb = Workbook() 
    ws = wb.add_sheet('Sheetname') 
    ws.write(0, 0, 'Firstname') 
    ws.write(0, 1, 'Surname') 
    ws.write(1, 0, 'Hans') 
    ws.write(1, 1, 'Muster') 

    fname = 'testfile.xls' 
    response = HttpResponse(mimetype="application/ms-excel") 
    response['Content-Disposition'] = 'attachment; filename=%s' % fname 

    wb.save(response) 

    return response 

que estoy viendo este comportamiento en IE 8.

Cualquier sugerencia en cuanto a por qué esto no funciona en Internet Explorer?

Gracias.

+0

Pruebe con 'application/vnd.ms-excel' mimetype. – manji

+0

guau, eso fue rápido y funcionó. Gracias. ¿Puedes explicar qué hace 'vnd'? – sequoia

+0

Mira mi respuesta para una explicación. – manji

Respuesta

4

El tipo MIME que está utilizando no es válido para application/ms-excel.xls archivos.

El estándar es application/vnd.ms-excel

mira aquí Setting mime type for excel document para más información.

+0

Sin embargo, el encabezado Content-Disposition debería haber resultado en un aviso de Guardar. OP debería usar Fiddler para ver los encabezados de respuesta HTTP para asegurarse de que se está enviando el encabezado. – EricLaw