xlwt即时写出excel表

Dav*_*542 12 python xlwt

我习惯用以下方式创建电子表格:

    wbk = xlwt.Workbook()
    earnings_tab = wbk.add_sheet('EARNINGS')
    wbk.save(filepath)
Run Code Online (Sandbox Code Playgroud)

有没有办法不将文件保存到文件路径,而是将其即时写入下载文件的用户?或者我是否需要将其保存为tmp文件,然后将其提供给用户?

ber*_*nie 14

引用以下.save()方法的文档xlwt:

它也可以是具有write方法的流对象,例如a StringIO,在这种情况下,excel文件的数据被写入流.

修改示例:

import StringIO

f = StringIO.StringIO() # create a file-like object 

wbk = xlwt.Workbook()
earnings_tab = wbk.add_sheet('EARNINGS')

wbk.save(f) # write to stdout
Run Code Online (Sandbox Code Playgroud)

有些人可能会建议您使用cStringIO而不是StringIO,但要预先警告cStringIO我最后检查时没有正确处理Unicode.

也许值得注意的是,StringIO在Python 3 中被替换为io.


ზურ*_*აძე 11

这是我在Django中使用的:

response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=file.xls'
book.save(response)
return response
Run Code Online (Sandbox Code Playgroud)