2014-01-14 62 views
2

我想添加我的django應用程序的views.py選項'download as excel'。 HttpResponse在html文件中。這裏有幾個views.py看起來像這樣如何在django中創建下載爲excel選項的views.py

def auto_run_html(request): 
    htmlfile = HttpResponse() 
    Month_no = request.GET['Month'] 
    htmlfile.write('<html><HEAD><LINK href="/static/timesheet.css" rel="stylesheet" type="text/css"></HEAD>') 
    htmlfile.write('<body>') 
    htmlfile.write('''<table class = "Emp_Details" > 
            <tr style="text-align:left"> 
             <th>{}</th><th>{}</th> 
            </tr> 
            <tr style="text-align:left"> 
             <th>{}</th><th>{}</th> 
            </tr> 
            <tr style="text-align:left"> 
             <th>{}</th><th>{}</th> 
            </tr> 
          </table>'''.format('Department',dept_row,'Employee ID',dept_row[2],'Employee Name',dept_row)) 
    return HttpResponse(htmlfile) 

這裏我想添加下載作爲excel操作。我曾嘗試過這種方式輸出csv,但它只能用於在瀏覽器中顯示爲csv文件而不是html。文檔告訴用戶可以保存爲csv文件,但它只能提供html頁面的選項。

我正在使用django 1.6 & python 2.7。這可能是this的重複。

我是新來的python,如果它只能由python-excel過程完成,那麼請舉例說明我的上述代碼。預先感謝。

這是我的csv編碼veiws.py.Please標出我在哪裏做錯了。

def auto_run_html(request): 
    response = HttpResponse(content_type='text/csv') 
    response['Content-Disposition'] = 'attachment; filename="somefilename.csv"' 
    htmlfile = csv.writer(response) 
    htmlfile.writerow('''<table class = "Emp_Details" > 
           <tr style="text-align:left"> 
            <th>{}</th><th>{}</th> 
           </tr> 
           <tr style="text-align:left"> 
            <th>{}</th><th>{}</th> 
           </tr> 
           <tr style="text-align:left"> 
            <th>{}</th><th>{}</th> 
           </tr> 
         </table>'''.format('Department',dept_row,'Employee ID',dept_row[2],'Employee Name',dept_row)) 
    return response 

回答

2

CSV是要走的路。您只需要正確指定內容類型和處置。例如:

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

然後使用標準python csv模塊形成實際的CSV。

+0

感謝您的回覆。正如我所說,我嘗試過這一點。但這是爲了在瀏覽器中顯示csv。 – Swagat

+0

用戶如何下載document.csv。我需要知道如何下載document.csv,因爲它不存儲在服務器 – Swagat

+0

這段代碼是正確的。行爲良好的瀏覽器不應顯示文件內容,但應提示下載它。 – Anentropic

相關問題