最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django HTTPResponse響應(yīng)體中返回openpyxl生成的文件過程

 更新時(shí)間:2025年08月02日 16:31:56   作者:藍(lán)小白1024  
Django返回文件流時(shí)需通過Content-Disposition頭指定編碼后的文件名,使用openpyxl的save_virtual_workbook方法將Excel數(shù)據(jù)直接寫入HttpResponse響應(yīng)體,實(shí)現(xiàn)瀏覽器正確下載文件

Django返回文件流時(shí)使用指定文件名

http響應(yīng)頭中字符應(yīng)該按照url百分號(hào)編碼

# Python3
from urllib.parse import quote
...

# 字符串編碼問題 str(filename) ---- filename為文件名, 可能需要轉(zhuǎn)換為字符串先
response['Content-Disposition'] = 'attachment; filename={0}.xlsx'.format(quote(filename))

Django HTTPResponse響應(yīng)體中返回openpyxl生成的文件

直接將 openpyxl 生成 Excel 文檔寫入到 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()
	'''
	....為寫入數(shù)據(jù)的步驟 略
	'''

	# 吧文件流寫入 返回體
    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è)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 目前最全的python的就業(yè)方向

    目前最全的python的就業(yè)方向

    Python是一門面向?qū)ο蟮木幊陶Z言,編譯速度超快,從誕生到現(xiàn)在已經(jīng)25個(gè)年頭了。其特點(diǎn)在于靈活運(yùn)用,因?yàn)槠鋼碛写罅康谌綆?,所以開發(fā)人員不必重復(fù)造輪子,就像搭積木一樣,只要擅于利用這些庫就可以完成絕大部分工作
    2018-06-06
  • Python編程快速上手——強(qiáng)口令檢測(cè)算法案例分析

    Python編程快速上手——強(qiáng)口令檢測(cè)算法案例分析

    這篇文章主要介紹了Python強(qiáng)口令檢測(cè)算法,結(jié)合實(shí)例形式分析了Python針對(duì)密碼口令強(qiáng)度檢測(cè)的相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2020-02-02
  • Pyspider進(jìn)行API接口抓取和數(shù)據(jù)采集的實(shí)現(xiàn)

    Pyspider進(jìn)行API接口抓取和數(shù)據(jù)采集的實(shí)現(xiàn)

    Pyspider是一個(gè)基于Python的強(qiáng)大的網(wǎng)絡(luò)爬蟲框架,它提供了豐富的功能和靈活的擴(kuò)展性,使我們可以輕松地進(jìn)行數(shù)據(jù)的抓取和處理,本文主要介紹了Pyspider進(jìn)行API接口抓取和數(shù)據(jù)采集的實(shí)現(xiàn),感興趣的可以了解一下
    2023-09-09
  • 如何在Conda環(huán)境中降級(jí)Python版本詳細(xì)指南

    如何在Conda環(huán)境中降級(jí)Python版本詳細(xì)指南

    在Conda環(huán)境中查看Python版本是一個(gè)常見需求,特別是當(dāng)您管理多個(gè)環(huán)境時(shí),這篇文章主要介紹了如何在Conda環(huán)境中降級(jí)Python版本的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • pyqt4教程之實(shí)現(xiàn)半透明的天氣預(yù)報(bào)界面示例

    pyqt4教程之實(shí)現(xiàn)半透明的天氣預(yù)報(bào)界面示例

    這篇文章主要介紹了pyqt4實(shí)現(xiàn)半透明的天氣預(yù)報(bào)界面示例,需要的朋友可以參考下
    2014-03-03
  • vscode配置與python虛擬環(huán)境切換的幾種方式總結(jié)

    vscode配置與python虛擬環(huán)境切換的幾種方式總結(jié)

    Python之所以強(qiáng)大,除了語言本身的特性外,更重要的是擁有無所不及的第三方庫,下面這篇文章主要給大家介紹了關(guān)于vscode配置與python虛擬環(huán)境切換的幾種方式,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-12-12
  • 精心整理總結(jié)的Python自動(dòng)化測(cè)試面試題

    精心整理總結(jié)的Python自動(dòng)化測(cè)試面試題

    簡單來說,自動(dòng)化測(cè)試框架包含了所有的測(cè)試工作所需的測(cè)試框架,下面這篇文章主要給大家介紹了關(guān)于Python自動(dòng)化測(cè)試面試題的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02
  • numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn)

    numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn)

    這篇文章主要介紹了numpy.random.shuffle打亂順序函數(shù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Python對(duì)象的屬性訪問過程詳解

    Python對(duì)象的屬性訪問過程詳解

    這篇文章主要介紹了Python對(duì)象的屬性訪問過程詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • pandas中quantile()函數(shù)的應(yīng)用及說明

    pandas中quantile()函數(shù)的應(yīng)用及說明

    本文介紹了pandas中quantile()函數(shù)用于計(jì)算DataFrame或Series中數(shù)值型數(shù)據(jù)的分位數(shù),通過示例展示了如何計(jì)算整個(gè)DataFrame、每列和每行的分位數(shù),并可指定百分位數(shù)和axis參數(shù)進(jìn)行計(jì)算
    2026-05-05

最新評(píng)論

中牟县| 临安市| 沙雅县| 岱山县| 贵溪市| 珲春市| 库尔勒市| 广宁县| 抚顺市| 色达县| 磐石市| 富源县| 大同市| 兴义市| 凌源市| 沛县| 枣阳市| 马山县| 全州县| 云阳县| 开阳县| 澄迈县| 龙州县| 临邑县| 阜阳市| 保定市| 留坝县| 富民县| 长沙县| 东山县| 瓦房店市| 洛南县| 沂源县| 平阴县| 金山区| 舟曲县| 华亭县| 新和县| 浮梁县| 女性| 浮山县|