使用 pyExcelerator 与 Django 生成动态 Excel 文件。确保临时文件名唯一

发布于 2024-08-14 06:46:40 字数 351 浏览 11 评论 0原文

我想根据 Django 的请求生成一个动态 Excel 文件。库 pyExcelerator 可以做到这一点,但我还没有找到任何方法来使用 Excel 文件的内容,而无需生成服务器端临时 Excel 文件、读取它、使用其内容并删除它。

问题是 pyExcelerator 提取 Excel 文件内容的唯一方法是通过以下方式保存它:

workbook = pyExcelerator.Workbook()
workbook.save("tmp_filename")

然后读取临时文件内容。我无法使用标准库“tempfile”,因为它不接受文件,只接受文件名。如何确保文件名是唯一的并且文件一旦使用就被删除?

I'd like to generate a dynamic Excel file on request from Django. The library pyExcelerator does this, but I haven't found any way to use the contents of the Excel file without generating a server-side temporary Excel file, reading it, using its contents and deleting it.

The problem is that pyExcelerator only way to extract the contents of the Excel file is saving it via:

workbook = pyExcelerator.Workbook()
workbook.save("tmp_filename")

And then read the temporary file contents. I can't use the standard library "tempfile" because it doesn't accept a file, just a filename. How can I ensure that the filename is unique and that the file is deleted once it has been used?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

来日方长 2024-08-21 06:46:40

pyExcelerator 未维护,但它有一个分支 xlwt,它得到维护并具有更多功能,包括允许您保存到任何类似文件的对象。这包括直接保存到 Django HttpResponse

from django.http import HttpResponse
import xlwt

def my_view(request):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename="foo.xls"'
    wb = xlwt.Workbook()
    wb.save(response)
    return response

pyExcelerator is unmaintained, but it has a fork, xlwt, which is maintained and has more features, including allowing you to save to any file-like object. This includes saving straight to a Django HttpResponse:

from django.http import HttpResponse
import xlwt

def my_view(request):
    response = HttpResponse(mimetype="application/ms-excel")
    response['Content-Disposition'] = 'attachment; filename="foo.xls"'
    wb = xlwt.Workbook()
    wb.save(response)
    return response
泛滥成性 2024-08-21 06:46:40

为什么不能使用 tempfile 模块?

怎么样:

import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)

Why can you not use the tempfile module?

How about:

import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文