覆盖django导出中的单元格

时间:2014-08-20 18:47:44

标签: python django

我在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

使用“打印表单”我正在检查该表单是否具有我在表格中选择的值。

1 个答案:

答案 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