2013-11-01 59 views
0

大家好日子,從字典中寫csv

我想從字典中編寫一個csv文件。跟着這裏https://docs.djangoproject.com/en/dev/howto/outputting-csv/一切,我只是改變了csv_data到詞典

response = HttpResponse(content_type='text/csv') 
response['Content-Disposition'] = 'attachment; filename="some_file(%s).csv"' 

csv_data = {'data' : [('quick', 'brown', 'fox', 'jump'), ('over', 'the', 'lazy', 'dog'), 'total' : 23, 'subtotal': 4} 
t = loader.get_template('main/report/contract_position.txt') 
c = Context({ 
      'csv_data' : csv_data, 
      }) 

response.write(t.render(c)) 
return response 

在我的.txt文件

"header1", "header2", "header3", "header4", "total", "subtotal" 
{% for item in csv_data %} 
???? #what should be here. Cuz I can't do something item.0|addslashes. It only takes out the first character of the string 
{% endfor %} 

在這我想產生類似。

header1 header2 header3 header4 
quick brown fox jump  
over the  lazy dog 
total subtotal 
23  4 

任何幫助將不勝感激。由於

回答

1

使用csv

import csv 

def your_view(request, ...): 
    csv_data = { 
     'data': [ 
      ('quick', 'brown', 'fox', 'jump'), 
      ('over', 'the', 'lazy', 'dog') 
     ], 
     'total': 23, 
     'subtotal': 4 
    } 

    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename="some_file.csv"' 
    writer = csv.writer(response, delimiter='\t') 
    writer.writerow(['header1', 'header2', 'header3', 'header4']) 
    writer.writerows(csv_data['data']) 
    writer.writerow(['tota', 'subtotal']) 
    writer.writerow([csv_data['total'], csv_data['subtotal']]) 
    return response 
+0

先生,您是我的救命恩人!真的很感激你的迴應。謝謝。 –