在ASP.NET中将HTML内容写入Word文档中的问题 [英] Problem writing HTML content to Word document in ASP.NET

查看:216
本文介绍了在ASP.NET中将HTML内容写入Word文档中的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我的Html显示页面是:


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

NA


  1. 列出前三名学校?

一个国家
两个Devs
三个PS



和一个点击事件的按钮。按钮单击事件将打开MS单词并粘贴页面内容。



该单词页面包含html设计页面的表属性。它只发生在Word 2003中。但是在Word 2007中,word文档包含带有表属性的文本。如何在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;
//创建文件流长度的字节数组
renderedBytes = new byte [fs.Length];
//从流中读取字节数组到字节数组
fs.Read(renderedBytes,0,System.Convert.ToInt32(fs.Length));
//关闭文件流
fs.Close();
FileInfo TheFile = new FileInfo(fileName1);
if(TheFile.Exists)
{
File.Delete(fileName1);
}
Response.BinaryWrite(renderedBytes);

Response.Flush();
Response.End();
}


解决方案

您正在编写HTML,声称它是内容类型应用程序/ msword,然后希望最好..



有更多的正确的方式来实现您的目标。



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



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




  • 您无法控制导入的执行方式;

  • Word 2003不支持AltChunk(即使使用兼容性包) li>

I am trying to export the HTML page contents to Word.

My Html display page is:

  1. What is your favourite color?

NA

  1. List the top three school ?

one National two Devs three PS

And a button for click event. The button click event will open MS word and paste the page contents in word.

The word page contains the table property of html design page. It occurs only in Word 2003. But in word 2007 the word document contains the text with out table property. How can I remove this table property in word 2003.

I am not able to add the snapshots. Else i will make you clear.

I am designing the web page by aspx. I am exporting the web page content by the following code.

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();
}

解决方案

You are writing HTML, claiming it is of content type "application/msword", then hoping for the best..

There are more "correct" ways to achieve your objective.

There are a few projects around for converting (X)HTML to WordML content, of which docx4j-ImportXHTML.NET is one. Disclosure: I maintain that; you can find links to others elsewhere here on StackOverflow.

Alternatively, you can use Word's altChunk mechanism, though note:

  • you have less control over how the import is performed;
  • AltChunk isn't supported by Word 2003 (even with the compatibility pack).

这篇关于在ASP.NET中将HTML内容写入Word文档中的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆