方法找到了。using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;
namespace FileManageDll { /// <summary> /// 需要在调用的页面中必须重写VerifyRenderingInServerForm方法,否则将出现错误 /// public override void VerifyRenderingInServerForm( Control control ) /// { /// } /// /// </summary> public class HtmlDataToDoc { private Page _InvokePage; /// <summary> /// 调用的页面 /// </summary> public Page InvokePage { get { return _InvokePage; } set { _InvokePage = value; } }
你上网搜一下这两个视频。这应该是传智播客2010年的教学视频。若是在找不到发个邮件说一声[email protected],我发给你
【传智播客.Net培训—asp.net中级】8HttpHandler练习说明.avi
【传智播客.Net培训—asp.net中级】9HttpHandler练习点评.avi
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FileManageDll
{
/// <summary>
/// 需要在调用的页面中必须重写VerifyRenderingInServerForm方法,否则将出现错误
/// public override void VerifyRenderingInServerForm( Control control )
/// {
/// }
///
/// </summary>
public class HtmlDataToDoc
{
private Page _InvokePage;
/// <summary>
/// 调用的页面
/// </summary>
public Page InvokePage
{
get { return _InvokePage; }
set { _InvokePage = value; }
}
/// <summary>
/// 构造函数
/// </summary>
/// <param name="invoke_page">调用的页面,参数传this.Page</param>
public HtmlDataToDoc(Page invoke_page)
{
_InvokePage = invoke_page;
}
/// <summary>
/// Table导出excel
/// </summary>
/// <param name="tab"></param>
/// <param name="fileName"></param>
public void TableDataToExcel(System.Web.UI.HtmlControls.HtmlTable tab, string fileName)
{
if (fileName.ToLower().IndexOf(".xls") == -1)
{
fileName = fileName + ".xls";
}
TableExport(tab, fileName, "application/ms-excel");
}
/// <summary>
/// Table导出Word
/// </summary>
/// <param name="tab"></param>
/// <param name="fileName"></param>
public void TableDataToWord(System.Web.UI.HtmlControls.HtmlTable tab, string fileName)
{
if (fileName.ToLower().IndexOf(".doc") == -1)
{
fileName = fileName + ".doc";
}
TableExport(tab, fileName, "application/ms-word");
}
/// <summary>
/// 导入数据,保存文档
/// </summary>
/// <param name="tab"></param>
/// <param name="fileName"></param>
/// <param name="typeName"></param>
private void TableExport(System.Web.UI.HtmlControls.HtmlTable tab, string fileName, string typeName)
{
System.Web.HttpResponse httpResponse = _InvokePage.Response;
httpResponse.Clear();
httpResponse.Buffer = true;
httpResponse.Charset = "GB2312";
//Response.Charset = "UTF-8";
httpResponse.Write("<meta http-equiv=Content-Type content=text/html;charset=GB2312>");
httpResponse.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8).ToString());
httpResponse.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
httpResponse.ContentType = typeName;
_InvokePage.EnableViewState = false;
StringWriter tw = new StringWriter();
System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
tab.RenderControl(hw);
httpResponse.Write(tw.ToString());
httpResponse.End();
}
}调用时protected void btnToWord_Click(object sender, EventArgs e)
{
string fileName = "fileName.doc";
FileManageDll.HtmlDataToDoc hdtd = new FileManageDll.HtmlDataToDoc(this.Page);
hdtd.TableDataToWord(this.TableId, fileName);
}
private void DataTableExcel(System.Data.DataTable dtData, String FileName)
{
System.Web.UI.WebControls.GridView dgExport = null;
//当前对话
System.Web.HttpContext curContext = System.Web.HttpContext.Current;
//IO用于导出并返回excel文件
System.IO.StringWriter strWriter = null;
System.Web.UI.HtmlTextWriter htmlWriter = null; if (dtData != null)
{
//设置编码和附件格式
//System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码
curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls");
curContext.Response.ContentType = "application nd.ms-excel";
curContext.Response.ContentEncoding = System.Text.Encoding.UTF8;
curContext.Response.Charset = "GB2312"; //导出Excel文件
strWriter = new System.IO.StringWriter();
htmlWriter = new System.Web.UI.HtmlTextWriter(strWriter); //为了解决dgData中可能进行了分页的情况,需要重新定义一个无分页的GridView
dgExport = new System.Web.UI.WebControls.GridView();
dgExport.AllowPaging = false;
dgExport.DataSource = dtData.DefaultView;
dgExport.AllowPaging = false;
dgExport.DataBind(); //下载到客户端
dgExport.RenderControl(htmlWriter);
curContext.Response.Write( "<style>td{ mso-number-format:\"\\@\"; } </style> "+strWriter.ToString());
curContext.Response.End();
}
}