首页 > 其他分享 >django中实现excel的下载功能

django中实现excel的下载功能

时间:2022-11-20 14:12:01浏览次数:75  
标签:excel django num ws login filename 下载 row

利用python中的xlsxwriter库,注意该库只能创建excel.而不支持读取和修改,也不支持XLS格式。

1.urls.py

from django.contrib import admin
from django.urls import path, include
from web import views

urlpatterns = [
    path('download/',views.download),
  path('login/',views.login)
]

2.views.py

def download(request):
    document_root = settings.BASE_DIR
    dest_filename =  os.path.join(document_root,'files','xiao.xlsx')
    #dest_filename = document_root + 'files' + file_name
    wb = xlsxwriter.Workbook(dest_filename)
    print(wb)
    ws = wb.add_worksheet("xiashou")

    row_num = 0
    columns = ["序号",'姓名','年龄','密码']
    for colu_num in range(len(columns)):
        ws.write(row_num,colu_num,columns[colu_num])

    rows = User.objects.values_list('id','username','age','password')
    for row in rows:
        row_num += 1
        row = list(row)
        for colu_num in range(len(row)):
            ws.write(row_num,0,row[0])
            ws.write(row_num,1,row[1])
            ws.write(row_num,2,row[2])
            ws.write(row_num,3,row[3])
    wb.close()
    excel = open(dest_filename,'rb')
    response = FileResponse(excel)
    response["Content-Type"] = 'application/octet-stream'
    response['Content-Disposition'] = 'attachment;filename="{0}"'.format('xiaoshou.xlsx')
    return response

def login(request):

return render(request, 'login.html')

3.login.html

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/echarts.min.js"></script>
</head>
<body>
<h1>hello world</h1>
    <button id="button">点我导出</button>
</div>
// 方法一:在浏览器中通过a标签
<div>
    <a class="btn btn-success radius r" style="line-height:1.6em;margin-top:3px" title="导出报表" href="/download/">导出报表</a>

</div>
<script type="text/javascript">
   // 方法二:通过ajax获取
    $('#button').click(function () {
        $.ajax({
            url: 'download/',
            type: 'get',
            dataType: 'application/octet-stream',
            success: function (res) {
                console.log("成功")
           }
        })
    })
</script>
</body>
</html>    
  1. 方法一:可以通过<a></a>标签来下载,href=‘/要跳转的路由/’;
  2. 方法二:通过ajax来去对应的路由进行下载;

更多关于xlsxwriter库,参考https://blog.csdn.net/qq_44670803/article/details/102776659

标签:excel,django,num,ws,login,filename,下载,row
From: https://www.cnblogs.com/shaoyishi/p/16908372.html

相关文章

  • 下载数据(matplotlib可视化16章-1)
    1、从CSV文件中提取数据importcsvimportmatplotlib.pyplotaspltfilename='sitka_weather_07-2014.csv'withopen(filename)asf:reader=csv.reader(f......
  • Django Rest_Framework(一)
    目录1.Web应用模式2.api接口3.RESTfulAPI规范4.序列化5.DjangoRest_Framework特点6.环境安装与配置6.1安装DRF6.1.1创建django项目6.2添加rest_framework应用6.......
  • Linux系列---【linux如何下载rpm离线安装包到本机】
    linux如何下载rpm离线安装包到本机1.问题在生产环境中,一般都是内网集群,服务器都是离线状态,要想安装一个软件,只能提前下载好,然后把安装包导进去,然后手动安装。这里为了解......
  • django---中间件
    中间件当用户发送请求时,其实时候是将请求发送给wsgi(一种协议),django使用的是wsgiref,然后再将请求发送给django的各个中间件(settings里的MIDDLEWARE表示使用的中间件),再由......
  • django--路由系统
    django路由系统 --动态路由 #----urls.py----------urlpatterns=[path('admin/',admin.site.urls),path('index/',views.index),re_path(r'edit/(\w*)/',vi......
  • django--基础知识
    --安装pipinstalldjango--创建一个django项目django-adminstartproject项目名--创建一个应用pythonmanage.pystartappapp01--启动django项目pythonmange.py......
  • 【Excel~基础】解决msoffice高低版本兼容问题
    问题描述现今的office高版本可以兼容低版本文件,例如office2016可以兼容2010,甚至是2003版本的excel文件,但低版本却无法打开高版本的excel文件。例如Excel2016格式的数......
  • Django Rest_Framework(一)
    GIT操作远程仓库推送代码凭证管理'初到公司,先克隆远程仓库的代码gitclonehttps://gitee.com/clschao/ttt.git将整个远程仓库的代码\分支\版本都拷贝到了......
  • django4基础
    #开始步骤pipinstalldjangodjango-adminstartprojectmysitepythonmanage.pyrunserver8000打开浏览器访问127.0.0.1:8000#新增url#urls.pyfromdjango.......
  • Linux下载安装RabbitMQ
    1、Erlnag安装1.1、安装Erlang版本要求Erlang安装需要对应各自的版本http://www.rabbitmq.com/which-erlang.html1.2、Erlang安装1、目录准备cd/usr/local/src/......