首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python-Django中生成xlsx文件并自动下载

如何在Python-Django中生成xlsx文件并自动下载
EN

Stack Overflow用户
提问于 2021-08-28 06:55:39
回答 1查看 54关注 0票数 0

我有一个下载按钮,可以将数据下载到xlsx文件中。所以在views.py中我有这个代码来生成带有数据的xlsx文件,但我不知道如何自动下载它,请发送帮助。

代码语言:javascript
复制
import os
import csv
import io
import xlsxwriter
from django.http.response import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from pathlib import Path


@csrf_exempt
def TestDl(request):
    if request.method == 'POST':
        try:
            downloads_path = str(Path.home() / "Downloads")
            path = downloads_path + "/demo.xlsx"

            # Create an new Excel file and add a worksheet.
            workbook = xlsxwriter.Workbook(path)
            worksheet = workbook.add_worksheet()

            # Widen the first column to make the text clearer.
            worksheet.set_column('A:A', 50)

            # Add a bold format to use to highlight cells.
            bold = workbook.add_format({'bold': True})

            # Write some simple text.
            worksheet.write('A1', 'Hello')

            # Text with formatting.
            worksheet.write('A2', 'World', bold)

            # Write some, with row/column notation.
            worksheet.write(2, 3, 312) # Number automatically positioned at the right side of a column
            worksheet.write(2, 8, 'asd')
            worksheet.write(3, 5, 'hfgh')
            worksheet.write(5, 2, '312')

            workbook.close()

            return JsonResponse({"result": "success"}, safe=False)
        except:
            return JsonResponse({"result": "error"}, safe=False)

    return JsonResponse({"result": "failed"}, safe=False)
EN

回答 1

Stack Overflow用户

发布于 2021-09-11 11:17:22

当我已经有了解决方案时,忘记回答这个问题。无论如何,我所做的是在静态文件夹中创建了一个文件夹,然后将其设置为保存所创建的xlsx文件的路径。

然后将这些代码添加到我声明下载单击函数的javascript中。

代码语言:javascript
复制
downloadURI(static_path, filename)

function downloadURI(uri, name) {
    var link = document.createElement("a");
    link.download = name;
    link.href = uri;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    delete link;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68962039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档