استخدم PyExcelerator لتوليد ملف Excel الديناميكي مع Django. ضمان اسم ملف مؤقت فريد
-
19-09-2019 - |
سؤال
أرغب في إنشاء ملف Excel ديناميكي عند الطلب من Django. يقوم المكتبة PyExcelerator بهذا، لكنني لم أجد أي طريقة لاستخدام محتويات ملف Excel دون إنشاء ملف Excel مؤقت من جانب الخادم، وقراءته، باستخدام محتوياته وحذفه.
المشكلة هي أن PyeFelerator طريقة فقط لاستخراج محتويات ملف Excel هو حفظه عبر:
workbook = pyExcelerator.Workbook()
workbook.save("tmp_filename")
ثم اقرأ محتويات الملف المؤقتة. لا يمكنني استخدام المكتبة القياسية "tempfile" لأنه لا يقبل ملف، مجرد اسم ملف. كيف يمكنني التأكد من أن اسم الملف فريد ويتم حذف الملف بمجرد استخدامه؟
المحلول
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
نصائح أخرى
لماذا لا يمكنك استخدام tempfile
وحدة؟
ماذا عن:
import tempfile
fd, filename = tempfile.mkstemp()
fd.close()
workbook.save(filename)
لا تنتمي إلى StackOverflow