考えられるほど複雑ではありません。実際、私が理解するように、あなたはDjangoモデルを持っており、例えばインスタンスのデータを.xlsxファイルでエクスポートする必要があります。
import openpyxl
from openpyxl.utils import get_column_letter
from django.http.response import HttpResponse
def method(request, **kwargs):
queryset = ModelName.objects.filter() # adjust accordingly
response = HttpResponse(content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
response['Content-Disposition'] = 'attachment; filename=this-is-your-filename.xlsx'
wb = openpyxl.Workbook()
ws = wb.get_active_sheet()
ws.title = "Your Title"
row_num = 0
columns = [
("ID", 5),
(u'Name', 20),
]
for col_num in range(len(columns)):
c = ws.cell(row=row_num + 1, column=col_num + 1)
c.value = columns[col_num][0]
ws.column_dimensions[get_column_letter(col_num + 1)].width = columns[col_num][1]
for obj in queryset:
row_num += 1
row = [
obj.pk,
obj.name,
]
for col_num in range(len(row)):
c = ws.cell(row=row_num + 1, column=col_num + 1)
c.value = row[col_num]
wb.save(response)
return response
あなたが最初pip install openpyxl
openpyxl
のlibにインストールする必要がありますのでご注意ください:
は、私は、次の簡単な解決策をお勧めしたいです。
実際にはxlsxwriterを使用してExcelファイルを生成し、サーバーに保存しています。この保存された.xlsxファイルをhttp応答として送信できますか? – INDER
私はあなたがそれをすることができない理由を考えることができません。レスポンスに 'Content-Disposition' HTTPヘッダーと正しい' content_type'を設定する必要があります。 –
ありがとう....私はこれを一度試してみるつもりです。また、何かをhtmlでも追加する必要がありますか、返信応答は自動的にファイル – INDER