本文共 1741 字,大约阅读时间需要 5 分钟。
导出文件名乱码只在IE内核的浏览器上发生,改也好改,只需把文件名encode一下就可以了,直接上代码:
@login_requireddef downloadfile(request): ''' 导出excel文件 ''' filename = u"公司代码" filename = filename.encode('gb2312') response = HttpResponse(mimetype='text/csv') response['Content-Disposition'] = 'attachment; filename=' + filename + '.xlsx' wbook = Workbook() # 新建一个workbook ewriter = ExcelWriter(workbook = wbook) # 新建一个excelWriter wsheet = wbook.worksheets[0] # 取第一个sheet wsheet.title = u"公司代码" wsheet.cell('A1').value = '%s' %(u'公司代码') wsheet.cell('B1').value = '%s' %(u'公司名称') wsheet.cell('C1').value = '%s' %(u'使用状态') companycodes = Companycode.objects.order_by('company_code') inquiry_status = request.GET.get('inquiry_status', None) query = request.GET.get('query', None) if inquiry_status == '0' or inquiry_status == '1': companycodes = companycodes.filter(flag__iexact = inquiry_status) if query != None and query != '': companycodes = companycodes.filter(Q(company_name__icontains = query) | Q(company_code__icontains = query)) row = 2 for companycode in companycodes: wsheet.cell('A%s' %(row)).value = '%s' %(companycode.company_code) wsheet.cell('B%s' %(row)).value = '%s' %(companycode.company_name) wsheet.cell('C%s' %(row)).value = u'在使用' if companycode.flag == 0 else u'已删除' row = row + 1 ewriter.save(response) # 写文件 return response
另外在python中有这样的情况存在:
filename = u"中国“
print filename # 这行代码会在console里面打印出文件名,但是是乱码的,而通过断点调试查看的结果却是正常的,如果在程序在要用filename的话,直接用就可以了,不用做特殊处理。
如果想在console里面看到正常的情况,可以对filename进行encode一下,如下所示:
filename = filename.encode('gb2312')
print filename # 这时候打印的就是正常的了。
转载地址:http://cxxci.baihongyu.com/