HTML以Word流形式输出并保存至本地
将界面上的HTML以word形式输出,然后在word中进行编辑等等。
在网上找到了一个解决方案,试了下,可行,具体如下:
前端ASPX页面代码:
<form id="form1" runat="server">
<div>
<asp:Label ID="Label1" runat="server"> </asp:Label>
</div>
</form>
<div>
<asp:Label ID="Label1" runat="server"> </asp:Label>
</div>
</form>
后台代码:
// 构造HTML输出
StringBuilder sb = new StringBuilder();
sb.Append("<table cellpadding='0' cellspacing='0'>");
sb.Append("<tr>");
sb.Append("<td>");
sb.Append("<img src='http://localhost:2435/rbqy2lld.gif'>");
sb.Append("</td>");
sb.Append("</tr>");
sb.Append("</table>");
this.Label1.Text = sb.ToString();
// HTML输出到WORD
Response.Clear();
Response.Buffer = true;
Response.Charset = "gb2312";
Response.AddHeader("Content-Disposition", "attachment;filename=expert.doc");
Response.ContentType = "application/ms-word";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
Label1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
StringBuilder sb = new StringBuilder();
sb.Append("<table cellpadding='0' cellspacing='0'>");
sb.Append("<tr>");
sb.Append("<td>");
sb.Append("<img src='http://localhost:2435/rbqy2lld.gif'>");
sb.Append("</td>");
sb.Append("</tr>");
sb.Append("</table>");
this.Label1.Text = sb.ToString();
// HTML输出到WORD
Response.Clear();
Response.Buffer = true;
Response.Charset = "gb2312";
Response.AddHeader("Content-Disposition", "attachment;filename=expert.doc");
Response.ContentType = "application/ms-word";
System.IO.StringWriter oStringWriter = new System.IO.StringWriter();
System.Web.UI.HtmlTextWriter oHtmlTextWriter = new System.Web.UI.HtmlTextWriter(oStringWriter);
Label1.RenderControl(oHtmlTextWriter);
Response.Output.Write(oStringWriter.ToString());
Response.Flush();
Response.End();
这样就可以将相应的HTML输出WORD中了。
注意:如果输出中有图片,图片URL需要采用绝对路径如:http://localhost:2435/rbqy2lld.gif,而不能使用相对路径。
抛砖引玉,如果大家有更好的解决方案,不吝赐教。