gpt4 book ai didi

python - 向用户提供 Excel(xlsx) 文件以供在 Django(Python) 中下载

转载 作者:太空狗 更新时间:2023-10-29 21:19:51 24 4
gpt4 key购买 nike

我正在尝试使用 Django 创建和提供 excel 文件。我有一个 jar 文件,它获取参数并根据参数生成一个 excel 文件,它可以正常工作。但是,当我试图获取生成的文件并将其提供给用户下载时,文件就坏了。它的大小为 0kb。这是我用于 excel 生成和服务的代码片段。

def generateExcel(request,id):
if os.path.exists('./%s_Report.xlsx' % id):
excel = open("%s_Report.xlsx" % id, "r")
output = StringIO.StringIO(excel.read())
out_content = output.getvalue()
output.close()
response = HttpResponse(out_content,content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=%s_Report.xlsx' % id
return response
else:
args = ['ServerExcel.jar', id]
result = jarWrapper(*args) # this creates the excel file with no problem
if result:
excel = open("%s_Report.xlsx" % id, "r")
output = StringIO.StringIO(excel.read())
out_content = output.getvalue()
output.close()
response = HttpResponse(out_content,content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=%s_Report.xlsx' % id
return response
else:
return HttpResponse(json.dumps({"no":"excel","no one": "cries"}))

我搜索了可能的解决方案并尝试使用 File Wrapper,但结果没有改变。我假设我在将 xlsx 文件读入 StringIO 对象时遇到问题。但是不知道如何修复它

最佳答案

到底为什么要将文件内容传递给 StringIO 只是为了将 StringIO.get_value() 分配给局部变量?将 file.read() 直接分配给您的变量有什么问题?

def generateExcel(request,id):
path = './%s_Report.xlsx' % id # this should live elsewhere, definitely
if os.path.exists(path):
with open(path, "r") as excel:
data = excel.read()

response = HttpResponse(data,content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=%s_Report.xlsx' % id
return response
else:
# quite some duplication to fix down there

现在您可能想检查您的文件中是否真的有任何内容——文件存在并不意味着它有任何内容。请记住,您处于并发上下文中,您可以让一个线程或进程尝试读取文件,而另一个(=> 另一个请求)正在尝试写入它。

关于python - 向用户提供 Excel(xlsx) 文件以供在 Django(Python) 中下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27062987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com