Django中Xlwt导出显示错误信息
我遇到了一些困难。在一个页面的底部有一个按钮。这个页面显示的是账单的渲染信息,每个账单都不一样,所以这些信息一直在变化。这个按钮的作用是让用户可以将账单下载为Excel文件。在下载的功能中,我在views.py里写了以下代码:
def descarga(request,id_factura):
fact = Factura.objects.get(pk= id_factura)
book = xlwt.Workbook(encoding='utf8')
sheet = book.add_sheet('report')
alignment = xlwt.Alignment()
alignment.horz = xlwt.Alignment.HORZ_LEFT
alignment.vert = xlwt.Alignment.VERT_TOP
style = xlwt.XFStyle() # Create Style
style.alignment = alignment # Add Alignment to Style
# write the header
header = ['Cliente', 'Fecha de Factura', 'Tipo de Factura', 'Numero de Factura', 'Descripcion', 'Subtotal', 'IVA', 'Precio']
for hcol, hcol_data in enumerate(header):
sheet.write(0, hcol, hcol_data, style=xlwt.Style.default_style)
# write your data, you can also get it from your model
data = {
"Cliente": fact.nombre_cliente,
"Fecha de Factura":fact.fecha_factura,
"Tipo de Factura": fact.tipo_Factura,
"Numero de Factura": fact.numero_De_Factura,
"Descripcion": fact.descripcion,
"Subtotal": fact.importe_sin_iva,
"IVA": fact.iva,
"Precio": fact.importe_Total,
}
for row, row_data in enumerate(data, start=1): # start from row no.1
for col, col_data in enumerate(row_data):
sheet.write(row, col, col_data)
response = HttpResponse(mimetype='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=report.xls'
book.save(response)
return response
我得到的表头是正确的,但是我想通过数据字典获取的信息却没有显示出来,反而是表头的名字一个字母一个字母地分开,像这样:
N u m e r o d e F a c t u r a
每个字母都变成了Excel文件中的一列
那么,我该怎么做才能让正确的信息显示出来,而不是这样呢?任何帮助都将非常感谢。谢谢!
1 个回答
1
问题出在这里:
for row, row_data in enumerate(data, start=1):
这里的行是1,2,3,4...,而你的行数据是一个字符串类型的数据的键,然后第二个循环是在这个字符串(键)上进行的。
for col, col_data in enumerate('Numero de Factura'):
也许可以试着把:
for row, row_data in enumerate(data, start=1): # start from row no.1
for col, col_data in enumerate(row_data):
sheet.write(row, col, col_data)
换成这个:
for column, key in enumerate(header, start=1):
sheet.write(1, column, data[key])