Django导出功能

导出Excel

  • 使用openpyxl生成Excel并导出下载``
  • Example:
    import openpyxl
    from django.utils.http import urlquote # 下载文件中文需要编码需要使用这个
    
    def exportToExcel(request):
        # 创建一个WorkBook
        wb = openpyxl.Workbook()
        # 创建一个Sheet
        sheet = wb.active
        # 往Excel的Sheet填充内容
        sheet.cell(1, 1, '被审计单位')
        sheet.cell(1, 2, '审计年度')
        sheet.cell(1, 3, '审计组长/主审')
        sheet.cell(1, 4, '单位预算代码')
        # 设置响应头
        response = HttpResponse(content_type='application/msexcel')
        # 设置下载文件编码,需要使用urlquote
        filename = urlquote('中文.xlsx')
        response[
        'Content-Disposition'] = f"attachment;filename*=utf-8'zh_cn'{filename}"
        # 保存Excel到相应中
        wb.save(response)
        return response
    
    
  • django中编写下载文件的代码时如果下载的文件名中包含中文,需要做特别的处理,不然无法正常下载文件,在请求中中文需要被编码;在django中提供了一个函数处理中文的编码:
    from django.utils.http import urlquote  #  下载文件中文需要编码需要使用这个
    filename = urlquote(filename)
    response['Content-Disposition'] = f'attachment;filename="{filename}"'
    
  • 解决FireFox中下载中文文件的乱码:就是修改响应头中的内容加上*以及utf-8’zh_cn’这部分的内容
    "Content-Disposition","attachment;filename*=utf-8'zh_cn'文件名.xx"
    # Django
    response['Content-Disposition'] = "attachment;filename*=utf-8'zh_cn'" + filename
    

导出Word

  • django中导出word文件使用的库是python-docx;在进行word导出操作时,先生成一个word文件,在下载该word文件到本地,最后删除这个word文件,此时就有一个文件被使用无法删除的问题,解决方式是通过用一个list变量存储该文件的二进制字节字符串,然后删除源文件,利用该中间的list变量去完成下载的工作,传参给FileResponse
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值