如何使用Django作为HttpResponse从磁盘返回Excel

我正在使用Django在我的网页上编写一个button来支持下载button,我已经生成了Excel(.xls)文件,并保存在服务器上。 我不需要使用csv编写器来dynamic地写行和列,然后返回响应,但是,我只是想将我的磁盘上的excel文件传入响应,然后返回响应,我的function在视图.py是这样的:

def price_list_download(request): today = date.today() filename = 'test_price_list-%s.xls' % today.strftime("%Y-%m-%d") response = HttpResponse(file("PATH_TO_EXCEL.xls")) response['Content-Type'] ='application/vnd.ms-excel' response['Content-Disposition'] = 'attachment; filename="' + filename + '"' return response 

但是,当我试图打开下载的文件时,它能够下载,它会popup一个标题:您要打开的文件“NAME_OF_FILE.xls”采用与文件扩展名指定的格式不同的格式。 你想打开它吗?…

我再次检查.xls文件应该使用application / vnd.ms-excel这个内容types,所以我很困惑,哪里出错了。 当我点击是,并试图打开这个下载的文件,它只包含一个随机string(ÐÏࡱ)第0行0列,其余的文件是空白的。

请帮忙吗? 谢谢

好了,问题解决了,我的一个同事帮我解决了问题:我不需要限制返回一个HttpResponse,而只需要在html中使用<a href="RELATIVE_PATH_TO_MY_FILE" type="submit"></a>button。 这样,我不需要打开磁盘上的Excel并将其读入内存,并再次写入HttpResponse。 此外,它还保存了我已经在Excel中生成的所有花式标题和格式的工作。

谢谢! 希望这可以服务于其他类似的情况!