python - Django:openpyxl 将工作簿保存为附件

标签 python django excel xlsx openpyxl

您好,我有一个简单的问题。我没有在网上找到答案,也许你们中的某个人可以帮助我。

所以我想将工作簿另存为附件,但我不知道如何查看示例:

    from openpyxl import Workbook
    from openpyxl.cell import get_column_letter
    wb = Workbook(encoding='utf-8')
    dest_filename = 'file.xlsx'
    ws = wb.worksheets[0]
    ws.title = "range names"
    for col_idx in xrange(1, 40):
        col = get_column_letter(col_idx)
        for row in xrange(1, 600):
            ws.cell('%s%s'%(col, row)).value = '%s%s' % (col, row)
    ws = wb.create_sheet()
    ws.title = 'Pi'
    ws.cell('F5').value = 3.14

然后我尝试了:

response = HttpResponse(wb, content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename="foo.xls"'
return response

它确实返回了 xlsx 文件,但在文件中只有对象地址而不是文件的内容:

<openpyxl.workbook.Workbook object at 0x00000000042806D8>

有人可以帮忙吗?

最佳答案

试一试:

from openpyxl.writer.excel import save_virtual_workbook
...
response = HttpResponse(save_virtual_workbook(wb), content_type='application/vnd.ms-excel')

save_virtual_workbook 专为您的用例而设计。这是一个文档字符串:

"""Return an in-memory workbook, suitable for a Django response."""

关于python - Django:openpyxl 将工作簿保存为附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16016039/

相关文章:

python - 在 Centos 上使用 pyodbc 连接到 Informix

Django - 有时 request.POST 是可变的,有时不是

python - 将一张表的内容复制到django中的另一张表

python - win32com Excel.Application 无法再打开文档

excel - 循环十进制数列

vba - 暗淡并在所有模块excel vba中设置一个变量

python - 如何分别移动列表中多个相同的矩形?

python - 如何查看 Django 登录生产环境

Python 将 Adblock 与 Selenium 和 Firefox Webdriver 结合使用

python - 如何在速度方面提高我的 'for' 循环性能?