#django #excel #export #xlsxwriter
#django #excel #экспорт #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:
values()
возвращает строки в виде списка словарей. В Python словари неупорядочены.
Комментарии:
1. Аааа, это все объясняет! Есть ли способ отсортировать словари так, чтобы они соответствовали порядку полей модели Django?