我在views.py中有这段代码。这是一个将数据从表导出到excel文件的函数:
for facturas in form:
data = {
"Cliente": facturas.nombre_cliente,
"Fecha de Factura":facturas.fecha_factura,
"Tipo de Factura": facturas.tipo_Factura,
}
for column, key in enumerate(header, start=1):
sheet.write(1, column, str(data[key]), body_style)
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
book.save(response)
return response
“form”是一个查询集,其中包含用户选择要导出的文件。
发生的事情是,如果我选择导出2个或更多文件,我只能获得一个文件的信息。
也许这是因为我覆盖了细胞,但我试图修改它并且没有任何改变。如何在excel文件的不同行中写入信息?
任何建议都是真的很好。感谢
修改
这就是我在表格中显示项目的方式:
{% for factura in facturas %}
<tr>
<td><i class="fa fa-file"> <a href="{% url 'ver_Factura' factura.pk %}">Ver</a></i>
<div class="checkbox">
<label>
<input type="checkbox" name="factura" value="{{ factura.pk }}">
</label>
</div>
</td>
<td>{{ factura.nombre_cliente }}</td>
<td>{{ factura.numero_De_Factura }}</td>
<td>{{ factura.fecha_factura }}</td>
</tr>
{% endfor %}
这包含在一个表格中:
<form action="{% url 'descarga'%}" method="POST" accept-charset="utf-8">
{% csrf_token %}
...
<input type="submit" name="_download" value="Descargar" id="buttonDescargar" class="btnDescargar">
</form>
编辑2
这就是我实例化表格的方式:
if request.method == 'POST':
form = Factura.objects.filter(id__in=selected_values)
print form
使用“打印表单”我正在检查该表单是否具有我在表格中选择的值。
答案 0 :(得分:0)
以下是如何将facturas
iterable的每个元素的值写入不同的行,然后返回一个响应:
for (rownum, facturas) in enumerate(form, start=1):
data = {
"Cliente": facturas.nombre_cliente,
"Fecha de Factura":facturas.fecha_factura,
"Tipo de Factura": facturas.tipo_Factura,
}
for column, key in enumerate(header, start=1):
sheet.write(rownum, column, str(data[key]), body_style)
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
book.save(response)
return response
你也可以在for循环之前构建空的response
,这没什么区别:
response = HttpResponse(content_type='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename = "report.xls"'
for (rownum, facturas) in enumerate(form, start=1):
data = {
"Cliente": facturas.nombre_cliente,
"Fecha de Factura":facturas.fecha_factura,
"Tipo de Factura": facturas.tipo_Factura,
}
for column, key in enumerate(header, start=1):
sheet.write(rownum, column, str(data[key]), body_style)
book.save(response)
return response