python - 如何生成 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)
解决方案
当我已经有了解决方案时忘记回答这个问题。无论如何,我所做的是我在静态文件夹中创建了一个文件夹,然后将其设置为保存创建的 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;
}
推荐阅读
- python - 查找列表中大于其邻居的元素数量
- visual-studio - 在选项对话框中导航页面(Visual Studio 扩展)
- twilio - Twilio Studio & Functions - 呼叫耳语
- python - Python 从不同版本导入不同的库
- sql - 从 JSON 中提取负整数
- alfresco - 在 Activiti 7 中使用接收任务暂停和恢复
- vim-plugin - 如何在插入模式下打开 ctrlp 插件文件建议?
- redux - ngrx(redux 模式)中的一些东西,我仍然无法用于大型应用程序
- rest - 尝试根据 where 子句删除列表中的所有记录
- reactjs - 如何在 react.js 中创建 Outlook 电子邮件模板