Django HTTPResponse響應(yīng)體中返回openpyxl生成的文件過(guò)程
Django返回文件流時(shí)使用指定文件名
http響應(yīng)頭中字符應(yīng)該按照url百分號(hào)編碼
# Python3
from urllib.parse import quote
...
# 字符串編碼問(wèn)題 str(filename) ---- filename為文件名, 可能需要轉(zhuǎn)換為字符串先
response['Content-Disposition'] = 'attachment; filename={0}.xlsx'.format(quote(filename))
Django HTTPResponse響應(yīng)體中返回openpyxl生成的文件
直接將 openpyxl 生成 Excel 文檔寫(xiě)入到 Django 的HttpResponse 對(duì)象響應(yīng)體中
在 openpyxl 的源碼中的有一個(gè)save_virtual_workbook 方法, 這個(gè)方法跟save在同一個(gè)文件,
導(dǎo)入路徑為
from openpyxl.writer.excel import save_virtual_workbook
@deprecated("Use a NamedTemporaryFile")
def save_virtual_workbook(workbook):
"""Return an in-memory workbook, suitable for a Django response."""
tmp = TemporaryFile()
archive = ZipFile(tmp, 'w', ZIP_DEFLATED, allowZip64=True)
writer = ExcelWriter(workbook, archive)
writer.save()
tmp.seek(0)
virtual_workbook = tmp.read()
tmp.close()
return virtual_workbook
在Django中使用并返回
from django.http import HttpResponse
from openpyxl import Workbook
from openpyxl.writer.excel import save_virtual_workbook
from urllib import quote
# 導(dǎo)出數(shù)據(jù)
def export_data(request):
wb = openpyxl.Workbook()
'''
....為寫(xiě)入數(shù)據(jù)的步驟 略
'''
# 吧文件流寫(xiě)入 返回體
response = HttpResponse(content=save_virtual_workbook(wb),
content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
# 給返回的文件命名
response['Content-Disposition'] = 'attachment; filename={0}.xlsx'.format(quote(str(title))) # 中文名字
return response
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Django框架HttpResponse和HttpRequest對(duì)象學(xué)習(xí)
- 詳解Django關(guān)于StreamingHttpResponse與FileResponse文件下載的最優(yōu)方法
- django實(shí)現(xiàn)HttpResponse返回json數(shù)據(jù)為中文
- Django框架HttpResponse對(duì)象用法實(shí)例分析
- Django使用HttpResponse返回圖片并顯示的方法
- Django的HttpRequest和HttpResponse對(duì)象詳解
- Django使用httpresponse返回用戶頭像實(shí)例代碼
相關(guān)文章
python小白練習(xí)題之條件控制與循環(huán)控制
Python 中的條件控制和循環(huán)語(yǔ)句都非常簡(jiǎn)單,也非常容易理解,與其他編程語(yǔ)言類似,下面這篇文章主要給大家介紹了關(guān)于python小白練習(xí)題之條件控制與循環(huán)控制的相關(guān)資料,需要的朋友可以參考下2021-10-10
Python綜合應(yīng)用名片管理系統(tǒng)案例詳解
這篇文章主要介紹了Python綜合應(yīng)用名片管理系統(tǒng),結(jié)合具體案例形式詳細(xì)分析了Python名片管理系統(tǒng)相關(guān)步驟、原理、實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下2020-01-01
Django解決無(wú)法從request.POST中獲取URL傳進(jìn)來(lái)的參數(shù)
這篇文章主要介紹了Django解決無(wú)法從request.POST中獲取URL傳進(jìn)來(lái)的參數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12
python2.7安裝opencv-python很慢且總是失敗問(wèn)題
這篇文章主要介紹了python2.7安裝opencv-python很慢且總是失敗問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02

