31人参与 • 2025-08-03 • https
http响应头中字符应该按照url百分号编码
# python3 from urllib.parse import quote ... # 字符串编码问题 str(filename) ---- filename为文件名, 可能需要转换为字符串先 response['content-disposition'] = 'attachment; filename={0}.xlsx'.format(quote(filename))
直接将 openpyxl 生成 excel 文档写入到 django 的httpresponse 对象响应体中
在 openpyxl 的源码中的有一个save_virtual_workbook
方法, 这个方法跟save
在同一个文件,
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
from django.http import httpresponse from openpyxl import workbook from openpyxl.writer.excel import save_virtual_workbook from urllib import quote # 导出数据 def export_data(request): wb = openpyxl.workbook() ''' ....为写入数据的步骤 略 ''' # 吧文件流写入 返回体 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
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论