我有一个显示一些信息的模板(每次打开模板时此信息都会更改,因为显示来自不同账单的数据,所以它一直在变化)这些数据在表中呈现如下:
<table id="items">
<tr>
<th class="tipo">Tipo de Factura</th>
<th class="descripcion">Descripcion</th>
<th>Precio</th>
</tr>
<tr class="item-row">
<td><div><textarea>{{fact.tipo_Factura}}</textarea></div></td>
<td class="description"><textarea>{{fact.descripcion}}</textarea></td>
<td><span class="price">$ {{fact.importe_sin_iva}}</span></td>
</tr>
</table>
<table id="totales">
<tr>
<td class="total-line">Subtotal</td>
<td class="total-value"><div id="subtotal">$ {{fact.importe_sin_iva}}</div></td>
</tr>
<tr>
<td class="total-line">Iva</td>
<td class="total-value"><div id="total">$ {{iva}}</div></td>
</tr>
<tr>
<td class="total-line">Precio Total</td>
<td class="total-value"><textarea id="paid">$ {{total}}</textarea></td>
</tr>
</table>
所以现在我必须在桌子底部放置一个底部,当用户按下它时,必须将信息下载到Excel文件中并保存在用户计算机的某处。
有人有任何想法或能指出任何(正确)方向,看看如何做到这一点?
任何建议都将不胜感激。谢谢
答案 0 :(得分:1)
我在类似的地方有以下代码:
“放置一个底部” - 是链接,如下所示:
<a href="/some/path/report"></a>
urls.py
中的:
...
url(r'^/some/path/report$', file_load_view),
...
view.py
中的
from StringIO import StringIO
from csv import DictWriter
@require_http_methods(["GET"])
def file_load_view(self, request):
f = StringIO()
writer = DictWriter(f, ["Tipo de Factura", "Descripcion", "Precio", "Subtotal", "total", "paid"])
writer.writeheader()
report_line = {
"Tipo de Factura": fact.tipo_Factura,
"Descripcion": fact.descripcion,
...
}
writer.writerow(report_line)
report = f.getvalue()
resp = HttpResponse(report, mimetype="application/octet-stream")
resp["Content-Disposition"] = "attachment; filename='{}'".format("report.csv")
return resp
结果用户加载csv文件(它与'exel'几乎相同)包含这样的报告:
Tipo de Factura,Descripcion,Precio,Subtotal,total,paid
1,2,3,4,5,6
如果您的磁盘上已存在报告文件report
可能等于:
...
fd = open("report/path/report.csv")
report = fd.read()
...