为什么xlsxwriter以错误的顺序将我的数据库中的数据从Django admin导出到Excel?

时间:2016-10-20 17:23:20

标签: django excel export xlsxwriter

我正在使用xlsxwriter将我的数据库内容从Django admin导出到Excel文件。 Excel文件中的标题应该是我的模型字段名称,后面是我的数据库中的数据行。我已经让导出过程正常工作,但是当我打开下载的Excel文件时,它会以看似随机的顺序显示我数据库中的所有列/数据。它们的显示顺序与Django admin中显示的字段顺序不同。在Django admin中,信息以表格的正确顺序显示,

A栏 - B栏 - C栏 - D栏 - E栏等 -

然而在我导出的Excel文件中,我看到它全部乱成一团,

B栏 - E栏 - A栏 - D栏 - C栏等 -

这是我的代码。我不明白为什么它不会以正确的顺序导出列名和数据。任何帮助赞赏!

def dump_attorneys_to_xlsx(request):
    if request.GET.get('export'):
        output = BytesIO()
        workbook = xlsxwriter.Workbook(output, {'in_memory': True})
        worksheet = workbook.add_worksheet('Summary')

        attorneys = Attorney.objects.all().values()
        # Write header
        worksheet.write_row(0, 0, attorneys[0].keys())
        # Write data
        for row_index, row_dict in enumerate(attorneys, start=1):
            worksheet.write_row(row_index, 0, row_dict.values())
        workbook.close()

        output.seek(0)

        response = HttpResponse(output.read(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
        response['Content-Disposition'] = 'attachment; filename=summary.xlsx'

        return response
    else:
        return render("change_list.html",
                      context_instance=RequestContext(request),
                      template_name='change_list.html')

1 个答案:

答案 0 :(得分:0)

values()将行作为字典列表返回。在Python中,字典是无序的。