我想将Django数据库表行中的数据作为列表检索,因此我可以迭代它并将列表的每个值写入Excel电子表格。我尝试使用字典做这个,但字典不是用Python命令的,所以我的列完全没有整理。我需要我的Excel电子表格看起来与我的数据库表相同,而不是以随机顺序乱码。我怎样才能做到这一点?
当前代码:
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'
答案 0 :(得分:1)
您可以使用csv.DictWriter
对象来获取字典列表而不是列表,或者使用QuerySet的values_list
方法而不是values
来返回行列表而不是字典。
否则,您可以使用以下命令(不是非常高性能)来命令写入文件:
keys = attorneys[0].keys()
worksheet.write_row(0, 0, keys)
# Write data
for row_index, row_dict in enumerate(attorneys, start=1):
row = [row_dict[k] for k in keys]
worksheet.write_row(row_index, 0, row)