我在用Python 3.5 开发Django应用,其中有一个view是负责生成excel表格并提供给用户下载,大致代码如下:
from openpyxl import Workbook
from openpyxl.writer.excel import save_virtual_workbook
def example(request):
wb = Workbook(write_only=True)
excel_data = [['a', 'b', 'c']]
ws = wb.create_sheet()
for line in excel_data:
ws.append(line)
response = HttpResponse(save_virtual_workbook(wb), content_type='application/octet-stream')
response['Content-Disposition'] = 'attachment; filename=somefile.xls'
return response
其中用英文的文件名如animal.xls
,浏览器显示正常,但是用了中文后,就是默认的文件名,如下载.xls
,或者如果我用了utf-8编码,是乱码b'-xc6-xbd-xcc-xa8-xc4-xda-xb2-xbf-xb2-xe2-xca-xd4.xlsx' (3).xls
,不知道如何解决。
在网上找到了解决方案,使用下面的代码,文件名成功显示了中文。
注:我在Firefox和Chrome上测试过了,运行正确,别的浏览器就不清楚了。