Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Serving a dynamically generated MS Excel files using django and xlwt fails in Internet Explorer

I am trying to use xlwt to create MS-Excel files from the contents of the database on my django site.

I have seen several solutions here on stackoverflow, in particular this link: django excel xlwt

and this django snippet: http://djangosnippets.org/snippets/2233/

These examples work in firefox, but not in Internet Explorer. Instead of getting prompted to open or save a file, a bunch of wingding junk appears on the screen. It seems that IE thinks the response is html.

Here is my view function:

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

I am seeing this behavior in IE 8.

Any suggestions as to why this isn't working in Internet Explorer?

Thanks.

like image 563
sequoia Avatar asked Oct 11 '22 01:10

sequoia


1 Answers

The mimetype you're using application/ms-excel is invalid for .xls files.

The standard one is application/vnd.ms-excel

Look here Setting mime type for excel document for more informations.

like image 153
manji Avatar answered Oct 14 '22 05:10

manji