2016-11-18 62 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

共享链接很有帮助。工作顺利。谢谢。 –