2012-05-04 34 views
0

我寫使用Django 1.4.I想用我的觀點來輸出mirosoft Word文檔中的一個follwoing代碼的Web應用程序:Django的輸出Word文件(.DOC),只顯示內容的原始HTML

response = HttpResponse(view_data, content_type='application/vnd.ms-word') 
response['Content-Disposition'] = 'attachment; filename=file.doc' 
return response 

然後,我可以成功下載FILE.DOC,但是當我打開.doc文件,我只找到了原始的HTML這樣

<h1>some contents</h1> 

不是標題1標題。

我是新來的python & Django,我知道這可能與html轉義有些問題,有人可以幫助我嗎? 謝謝!:)

回答

2

除非您有一些方法將您的響應(此處爲HTML我假設)轉換爲.doc文件,否則您將獲得的文本文件包含您的響應和擴展名.doc。如果你願意使用.docx文件,那麼有一個很好的Python庫叫做python-docx,你應該看看它,它允許你使用lxml庫生成格式良好的docx文件。

另外,使用模板,例如:

<html> 
<head> 
<META HTTP-EQUIV=""Content-Type"" CONTENT=""text/html; charset=UTF-8""> 
<meta name=ProgId content=Word.Document> 
<meta name=Generator content=""Microsoft Word 9""> 
<meta name=Originator content=""Microsoft Word 9""> 
<style> 
@page Section1 {size:595.45pt 841.7pt; margin:1.0in 1.25in 1.0in 1.25in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-paper-source:0;} 
div.Section1 {page:Section1;} 
@page Section2 {size:841.7pt 595.45pt;mso-page-orientation:landscape;margin:1.25in 1.0in 1.25in 1.0in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-paper-source:0;} 
div.Section2 {page:Section2;} 
</style> 
</head> 
<body> 
<div class=Section2> 
'Section1: Portrait, Section2: Landscape 

[your text here] 

</div> 
</body> 
</html> 

這應該according to this asp.net forum post進行有效的.doc文件時,爲MIME類型application/msword使用UTF-8字符集(所以一定要確保字符串都是Unicode)的返回。

+0

我可以輸出這樣的.doc文件,沒有任何asp.net技術問題,我甚至可以在.doc文件中放置任何css規則。我認爲這些東西在Danjo和Python世界中是一樣的... – NextStep

+0

我已經添加了一個__應該工作的編輯。 – Drakekin

+0

是的,它的工作原理!非常感謝你,Drakekin!~~人們說你總是在stackoverflow中得到解決方案,這是絕對正確的!~~~ – NextStep