使用 Django 工作簿和工作表创建 excel 文件
Creating excell file with Django workbook and worksheet
我正在尝试使用 django 工作簿和工作集创建 excell 报告,如下所示。
def print_assistant_notes(request):
if request.method == 'GET':
notes = AssistantNotes.objects.filter(notedate=datetime.today().date()).order_by("time")
workbook = load_workbook(os.path.join(settings.BASE_DIR, "export_templates", "assistant_notes.xlsx"))
worksheet = workbook.active
title_cell = worksheet["A%d" % (1,)]
title_cell.value = "Assistant Notes [ "+str(datetime.today().date())+" ] "
row = 3
for note in notes:
time_cell = worksheet["A%d" % (row,)]
category_cell = worksheet["B%d" % (row,)]
note_cell = worksheet["C%d" % (row,)]
time_cell.value = note.time
category_cell.value = note.categories
note_cell.value = note.dailynote
row = row + 1
tmp_file = tempfile.NamedTemporaryFile()
workbook.save(tmp_file.name)
response = HttpResponse(smart_str(tmp_file.read()), content_type='application/vnd.ms-excel')
response["Content-Disposition"] = 'attachment; filename="assistant_notes.xlsx"'
return response
当我打印报告时,我得到如下红色数据的优秀报告。但我希望它被格式化为蓝色格式。因为 notes colum 不适合打印区域,正如我用蓝色箭头提到的那样。
所以我可以说我的代码正在生成报告作为红色部分。
但我希望它适合蓝色部分的可打印区域。所以我希望能够设置单元格大小。文本将从左到右适合该单元格大小。随着文本大小的变化,向上到向下的单元格大小将是动态的。
如果您使用 openpyxl
,您实际上可以更改单元格的样式,如 documentation 中所述:
from openpyxl.styles import Alignment
note_cell.alignment = Alignment(wrap_text=True)
或者在 for...
循环之前创建一个 alignment
对象并重新使用它:
al = Alignment(wrap_text=True)
for note in notes:
...
note_cell = worksheet["C%d" % (row,)]
note_cell.alignment = al
哪个内存效率更高。
我正在尝试使用 django 工作簿和工作集创建 excell 报告,如下所示。
def print_assistant_notes(request):
if request.method == 'GET':
notes = AssistantNotes.objects.filter(notedate=datetime.today().date()).order_by("time")
workbook = load_workbook(os.path.join(settings.BASE_DIR, "export_templates", "assistant_notes.xlsx"))
worksheet = workbook.active
title_cell = worksheet["A%d" % (1,)]
title_cell.value = "Assistant Notes [ "+str(datetime.today().date())+" ] "
row = 3
for note in notes:
time_cell = worksheet["A%d" % (row,)]
category_cell = worksheet["B%d" % (row,)]
note_cell = worksheet["C%d" % (row,)]
time_cell.value = note.time
category_cell.value = note.categories
note_cell.value = note.dailynote
row = row + 1
tmp_file = tempfile.NamedTemporaryFile()
workbook.save(tmp_file.name)
response = HttpResponse(smart_str(tmp_file.read()), content_type='application/vnd.ms-excel')
response["Content-Disposition"] = 'attachment; filename="assistant_notes.xlsx"'
return response
当我打印报告时,我得到如下红色数据的优秀报告。但我希望它被格式化为蓝色格式。因为 notes colum 不适合打印区域,正如我用蓝色箭头提到的那样。 所以我可以说我的代码正在生成报告作为红色部分。 但我希望它适合蓝色部分的可打印区域。所以我希望能够设置单元格大小。文本将从左到右适合该单元格大小。随着文本大小的变化,向上到向下的单元格大小将是动态的。
如果您使用 openpyxl
,您实际上可以更改单元格的样式,如 documentation 中所述:
from openpyxl.styles import Alignment
note_cell.alignment = Alignment(wrap_text=True)
或者在 for...
循环之前创建一个 alignment
对象并重新使用它:
al = Alignment(wrap_text=True)
for note in notes:
...
note_cell = worksheet["C%d" % (row,)]
note_cell.alignment = al
哪个内存效率更高。