目的:有一个网页中的table,table中有若干内容,一个button按钮,点击时导出此table另存为excel(*.XLS)。
如何编写代码实现将table中的内容导出至excel表格中?仅导出此table中的内容,其他的不需要。
求详细代码步骤,谢谢了。C#。

解决方案 »

  1.   

    http://blog.ahnw.gov.cn/user1/apeng/archives/2006/10.html
      

  2.   

    http://www.cnblogs.com/lxinxuan/archive/2006/10/31/545533.html
      

  3.   


    你上网搜一下这两个视频。这应该是传智播客2010年的教学视频。若是在找不到发个邮件说一声[email protected],我发给你
    【传智播客.Net培训—asp.net中级】8HttpHandler练习说明.avi
    【传智播客.Net培训—asp.net中级】9HttpHandler练习点评.avi
      

  4.   

    方法找到了。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; }
             }              
             
             /// <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);
    }
      

  5.   


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