Python Django:如何通过Django视图下载.xls文件
我有一个按钮,可以下载扩展名为Python Django:如何通过Django视图下载.xls文件,python,django,django-views,Python,Django,Django Views,我有一个按钮,可以下载扩展名为.xls的excel文件。我正在使用modulexlrd解析文件并将其返回给用户。但是,它似乎将对象名称添加到excel文件中,而不是数据中 如何使用数据而不是对象名称将文件返回给用户 查看 def下载文件(self,testname): 导入csv、套接字、操作系统、xlrd 扩展名='.xls' path=r“C:\tests\{}\u Report{}”。格式(testname,扩展名) 尝试: f=xlrd.open_工作簿(路径) response=Htt
.xls
的excel文件。我正在使用modulexlrd
解析文件并将其返回给用户。但是,它似乎将对象名称添加到excel文件中,而不是数据中
如何使用数据而不是对象名称将文件返回给用户
查看
def下载文件(self,testname):
导入csv、套接字、操作系统、xlrd
扩展名='.xls'
path=r“C:\tests\{}\u Report{}”。格式(testname,扩展名)
尝试:
f=xlrd.open_工作簿(路径)
response=HttpResponse(f,content_type='application/ms excel')
响应['Content-Disposition']='附件;文件名={}报告{}。格式(testname,扩展名)
返回响应
除异常作为错误外:
返回HttpResponse(错误)
返回重定向('emissions\u dashboard:overview\u view\u record')
Excel结果
下载成功:
内容:
注意:我知道这是一种旧的文件格式,但对于这个特定的项目是必需的。您试图发送的是xlrd.book.book对象,而不是文件 您使用xlrd在工作簿中执行操作,然后保存到文件中
workbook = xlrd.open_workbook(path)
#... do something
workbook.save(path)
现在,您可以像发送任何其他文件一样发送它:
with open(path, 'rb') as f:
response = HttpResponse(f.read(), content_type="application/ms-excel")
response['Content-Disposition'] = 'attachment; filename={}_Report{}'.format(testname, extension)