Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:如何通过Django视图下载.xls文件_Python_Django_Django Views - Fatal编程技术网

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文件。我正在使用module
xlrd
解析文件并将其返回给用户。但是,它似乎将对象名称添加到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)