2016-11-18 39 views
0

下面是代碼。我們需要做些什麼改變。在MS Word文件(.docx)上渲染HTML代碼 - 文件被破壞

HttpContext context = HttpContext.Current; 
    context.Response.Clear(); 
    context.Response.AppendHeader("content-disposition", "attachment;filename=" + strFileName + ".docx"); 
    context.Response.Charset = ""; 
    context.Response.ContentType = "application/vnd.openxmlformats-officedocument.wordprocessingml.document"; 
    var stringWriter = new StringWriter(); 
    stringWriter.Write(strContent); 
    var htmlWriter = new HtmlTextWriter(stringWriter); 
    System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(stringWriter); 
    HttpContext.Current.Response.Write(oHtmlTextWriter); 
    context.Response.Write(stringWriter.ToString()); 
    context.Response.End(); 
+0

你能解釋一下你期望的結果嗎?您發佈的代碼顯然不起作用,因爲您沒有發送有效的Open XML包文件。簡單地寫出HTML並將其命名爲.docx不會將HTML轉換爲Word文件。 –

+0

謝謝德克答覆。我在strContent中傳遞HTML代碼,寫在Doc文件中,所以我正在尋找下載包含內容的docx文件。你能幫忙嗎? –

回答

1

您不能簡單地寫出HTML,給它一個.docx文件擴展名並希望Word能夠正確打開該文檔。 .docx文件需要是有效的Office Open XML包,它基本上是一個包含各種XML文件的zip容器(通過將.docx文件重命名爲.zip然後使用標準zip工具打開它)。

你現在能做些什麼來解決這個問題,並得到有效的Word文件:

  • 而不是HTML的,創建使用微軟的開放的XML SDK有效的docx文件。 SDK附帶了一些示例,向您展示如何使用它創建Word文檔。
  • 如果您無法通過創建HTML進行更改,則還可以使用所謂的altChunk將HTML嵌入到Word文檔中。這在另一個回答here中有描述。
  • 根據您生成的內容,可能還會創建一個模板Word文檔,您只需填寫佔位符。這種解決方案可以例如圍繞內容控制和自定義XML構建。然後,您只需要替換docx包中的單個XML文件來填充文檔。一個基本的教程是可用here
+0

共享鏈接很有幫助。工作順利。謝謝。 –