在HTML中将HTML内容写入Word文档时出现问题

时间:2009-04-29 07:26:59

标签: c# asp.net ms-word export

我正在尝试将HTML页面内容导出到Word。

我的Html显示页面是:

  1. 你最喜欢的颜色是什么?
  2. NA

    1. 列出前三名的学校?
    2. 一个国民 两个开发者 三PS

      点击事件的按钮。按钮单击事件将打开MS word并将页面内容粘贴到单词中。

      单词页面包含html设计页面的表属性。它仅在Word 2003中出现。但在word 2007中,word文档包含带有out属性的文本。如何在word 2003中删除此表属性。

      我无法添加快照。否则我会告诉你。

      我正在通过aspx设计网页。我通过以下代码导出网页内容。

      protected void Button1_Click(object sender, EventArgs e)
      {
      
          Response.ContentEncoding = System.Text.Encoding.UTF7;
          System.Text.StringBuilder SB = new System.Text.StringBuilder();
          System.IO.StringWriter SW = new System.IO.StringWriter();
          System.Web.UI.HtmlTextWriter htmlTW = new System.Web.UI.HtmlTextWriter(SW);
          tbl.RenderControl(htmlTW);
          string strBody = "<html>" +
              "<body>" + "<div><b>" + htmlTW.InnerWriter.ToString() + "</b></div>" +
              "</body>" +
              "</html>";
      
          Response.AppendHeader("Content-Type", "application/msword");
          Response.AppendHeader("Content-disposition", "attachment; filename=" + fileName);
          Response.ContentEncoding = System.Text.Encoding.UTF7;
      
          string fileName1 = "C://Temp/Excel" + DateTime.Now.Millisecond.ToString();
          BinaryWriter writer = new BinaryWriter(File.Open(fileName1, FileMode.Create));
          writer.Write(strBody);
          writer.Close();
          FileStream fs = new FileStream(fileName1, FileMode.Open, FileAccess.Read);
          byte[] renderedBytes;
          // Create a byte array of file stream length 
          renderedBytes = new byte[fs.Length];
          //Read block of bytes from stream into the byte array 
          fs.Read(renderedBytes, 0, System.Convert.ToInt32(fs.Length));
          //Close the File Stream 
          fs.Close();
          FileInfo TheFile = new FileInfo(fileName1);
          if (TheFile.Exists)
          {
              File.Delete(fileName1);
          }
          Response.BinaryWrite(renderedBytes);
      
          Response.Flush();
          Response.End();
      }
      

4 个答案:

答案 0 :(得分:1)

您正在撰写HTML,声称其内容类型为“application / msword”,然后希望获得最佳效果..

有更多“正确”的方法来实现您的目标。

有一些项目用于将(X)HTML转换为WordML内容,其中docx4j-ImportXHTML.NET是一个。披露:我坚持认为;您可以在StackOverflow上找到其他地方的链接。

或者,您可以使用Word的altChunk机制,但请注意:

  • 您对导入执行方式的控制较少;
  • Word 2003不支持AltChunk(即使使用兼容包)。

答案 1 :(得分:0)

答案 2 :(得分:0)

您还可以尝试创建现在由MS Office识别的Open XML文档。 以下是代码示例的更多信息: http://msdn.microsoft.com/en-us/library/bb656295.aspx

答案 3 :(得分:0)

根据我的理解,您正在尝试动态创建ms word文档,并且在Word 2003与2007年中查看输出时遇到困难。

在上面的代码中,您只是吐出html并强制它成为ms word文档。我很惊讶它甚至可以工作。

相反,您可能希望使用Office Interop(Microsoft.Office.Interop.Word)或使用nuget安装DocX。在线查看一些示例,搜索“C#create word doc”。