Django上传下载excel文件

本教程适用

  1. 安装有django2.X-3.X
  2. django2-3上传下载文件

一、django2-3上传

  1. 在templates中设置
<form method="POST" action="" enctype="multipart/form-data">
#enctype="multipart/form-data"是用于文件上传,没有就不能上传
        {% csrf_token %}
        <input type="file" name="files">
        #html中file是用于传输文件,name是在views中提取
        <br>
        <input type="submit" value="上传">
</form>
  1. 在views中提取excle文件
file_data = request.FILES.get('files','你未选择文件请选择excel文件后再导入!')
#注:files是templates中的name='files'
#提取文件用request.FILES.get(key,自定义内容)
#注:提取的request.FILES.get(key,自定义内容)当作excel文件来处理。

二、下载文件

  1. 使用HTTPResponse库下载文件
from django.shortcuts import HttpResponse
  1. 实例化
#注:content_type='application/vnd.ms-excel'表明类型是excel
response = HttpResponse(content_type='application/vnd.ms-excel')
#用urlquote时文件名才支持中文
filename_tem= urlquote(filename)
# 设置文件名称
response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename_tem
  1. excel文件保存为二进
#1.二进制实例化
 output = BytesIO()
#2.写excel文件(写成excel文件后,将excel文件二进制化)
excel_file.save(output)
#3.重新定位到开始
output.seek(0)
  1. #excel文件保存为HttpResponse
response.write(output.getvalue())
  1. 一定要返回HTTPResponse对象
return response
  1. 完整代码
def export_excel(request,filename,data):
    #用urlquote时文件名才支持中文
    filename1= urlquote(filename)
    # 设置HTTPResponse的类型
    response = HttpResponse(content_type='application/vnd.ms-excel')
    # 设置文件名称
    response['Content-Disposition'] = 'attachment;filename=%s.xls'%filename1
    #取得excel文件
    output = excel_writer(request,filename,data)
    
    '''
    1.二进制实例化
    output = BytesIO()
    2.写excel文件
    写成excel文件后,将excel文件二进制化
    excel_file.save(output)
    3.重新定位到开始
    output.seek(0)
    '''
    #excel文件保存为HttpResponse
    response.write(output.getvalue())
    #下载excel表
    return response

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值