使用 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

哪个内存效率更高。