2016-10-20 11 views
0

私はxlsxwriterを使用して、データベースの内容をDjangoの管理者からExcelファイルにエクスポートしています。 Excelファイルのヘッダーは私のモデルのフィールド名であり、その後に私のdbからのデータの行が続きます。私は、エクスポートプロセスが動作するようになっていますが、ダウンロードしたExcelファイルを開くと、データベースからのすべての列/データが一見ランダムな順序で表示されます。彼らはDjango管理者に見られるようにフィールドと同じ順序で表示されません。 Djangoのadminにテーブル、xlsxwriterが私のデータベースのデータをDjangoの管理者からExcelにエクスポートするのが間違った順序で行われるのはなぜですか?

列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') 

答えて

0

values()は、行を辞書のリストとして返します。 Python辞書では順序付けられていません。

+0

ああ、これはそれを説明します!辞書がDjangoモデルのフィールドの順序と一致するように辞書を並べ替える方法はありますか? –

関連する問題