博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python解决导出excel文件时中文文件名乱码
阅读量:4053 次
发布时间:2019-05-25

本文共 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/

你可能感兴趣的文章
1.3 Debugging of Shaders (调试着色器)
查看>>
关于phpcms中模块_tag.class.php中的pc_tag()方法的含义
查看>>
vsftp 配置具有匿名登录也有系统用户登录,系统用户有管理权限,匿名只有下载权限。
查看>>
linux安装usb wifi接收器
查看>>
多线程使用随机函数需要注意的一点
查看>>
getpeername,getsockname
查看>>
VS 2005 CRT函数的安全性增强版本
查看>>
Visual Studio 2010:C++0x新特性
查看>>
drwtsn32.exe和adplus.vbs进行dump文件抓取
查看>>
cppcheck c++静态代码检查
查看>>
在C++中使用Lua
查看>>
socket编程中select的使用
查看>>
关于无人驾驶的过去、现在以及未来,看这篇文章就够了!
查看>>
所谓的进步和提升,就是完成认知升级
查看>>
为什么读了很多书,却学不到什么东西?
查看>>
长文干货:如何轻松应对工作中最棘手的13种场景?
查看>>
如何用好碎片化时间,让思维更有效率?
查看>>
No.174 - LeetCode1305 - 合并两个搜索树
查看>>
No.175 - LeetCode1306
查看>>
No.176 - LeetCode1309
查看>>