5

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.

Community
  • 1
  • 1
sequoia
  • 3,025
  • 8
  • 33
  • 41

1 Answers1

4

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.

Community
  • 1
  • 1
manji
  • 47,442
  • 5
  • 96
  • 103
  • Nevertheless, the Content-Disposition header should have resulted in a Save prompt. OP should use Fiddler to look at the HTTP response headers to make sure that the header was being sent. – EricLaw May 17 '11 at 04:25