首页 > 解决方案 > 如何生成 xlsx 文件并在 Python-Django 中自动下载

问题描述

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

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)

标签: python

解决方案


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

然后在我声明下载点击功能的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;
}

推荐阅读