参考PowerGrid源码---
设置几个属性
//导出文件的名称,使用Guid.NewGuid()得到随机名称
 private string m_ExportFileName = "";
  //传输数据的文件流类  
  private StreamWriter m_ExportWriter;
   //文件的链接路径
  private string m_PopupURL = "";

//导出按钮事件
private void btn_export_Click(object sender, System.EventArgs e)
  {
   string HtmlViewStr;

   this.m_ExportFileName = Guid.NewGuid().ToString()+".xls"; //得到文件名称
//使用文件流
   FileStream fs = new FileStream(this.CurrentPath(this.Page.Request.PhysicalPath) +"..\\temp\\"+this.m_ExportFileName,FileMode.CreateNew, FileAccess.Write, FileShare.None);
   this.m_ExportWriter = new StreamWriter(fs,Encoding.UTF8);

//得到导出文件的服务器路径
   this.m_PopupURL = this.CurrentVPath(this.Page.Request.Path)+"../temp/"+this.m_ExportFileName;

//获得导出的数据
HtmlViewStr = DataView2Html();

   this.Finish();
//这句不知道是什么意思,好想就是这句,才把网页文件变成Xls,不是很理解
   this.Page.Response.AddHeader("content-disposition", "inline; filename=export.xls");
   this.Page.RegisterStartupScript("",this._text);
  }
 // 完成导出数据的过程同时关闭使用过的流
  private void Finish()
  {
   try
   {
    //this._ExportString = this.m_ExportWriter;
    // 将产生的文件保存到服务器上,然后指引用户下载。
    this.m_ExportWriter.Close();
    this.PopUpWindow();
   }
   catch (Exception ex)
   {
    throw ex;
   }
  }
 //得到路径的三种方法
private string CurrentPath(string physicalPath)
  {
   int ilastSlash = physicalPath.LastIndexOf(@"\");
   int length = physicalPath.Length - ilastSlash;
   return physicalPath.Remove(ilastSlash,length)+@"\";
  }
  private string CurrentVPath(string physicalPath)
  {
   int ilastSlash = physicalPath.LastIndexOf(@"/");
   int length = physicalPath.Length - ilastSlash;
   return physicalPath.Remove(ilastSlash,length)+"/";
  }

  private string CurrentFileName(string allpathFileName)
  {
   int iLastslash = allpathFileName.LastIndexOf(@"\");
   return allpathFileName.Remove(0,iLastslash);
  }
//打开新窗口,提示下载保存
  private void PopUpWindow()
  {
   if (this.m_PopupURL.Length > 0)
   {
    this._text = "<script language='javascript'>window.open('"+ this.m_PopupURL+ "');window.opener=null;window.close();</script>";
   }
  }

//取得数据的函数,其实就是一个页面
  private string DataView2Html()
  { 
   //bool IsInit;
   
   string retHtml = string.Empty;
   
   ShipperMod MyShipperListMod = new ShipperMod();
   if(rl_select.Items.FindByValue("0").Selected == true)
   {
      
   }
   else
   {
   reader = MyShipperListMod.GetAllData();   
   }

   this.m_ExportWriter.WriteLine("<HTML><HEAD>");
   this.m_ExportWriter.WriteLine("<META HTTP-EQUIV='content-type' CONTENT='text/html; charset=gb2312'> ");
   this.m_ExportWriter.WriteLine("<LINK href='../style.css' type=text/css rel=stylesheet>");
   this.m_ExportWriter.WriteLine("</HEAD>");
   this.m_ExportWriter.WriteLine("<BODY>");
   this.m_ExportWriter.WriteLine("<TABLE width=600 border=1 align='center' cellPadding=1 cellSpacing=1 borderColor=#b9b9b9>");
   this.m_ExportWriter.WriteLine("<TR>");
   for(int i=1;i<reader.FieldCount;i++)
   {
    this.m_ExportWriter.WriteLine("<TD height=30 style='font-size:10.5pt;font-weight:bold'>"+ reader.GetName(i).ToString() +"</td>");
   }
   this.m_ExportWriter.WriteLine("</TR>");
   while(reader.Read())
   {
    this.m_ExportWriter.WriteLine("<TR>");
    for(int i=1;i<reader.FieldCount;i++)
    {
     this.m_ExportWriter.WriteLine("<TD height=30>"+ reader[i].ToString() +"</td>");
    }
    this.m_ExportWriter.WriteLine("</TR>");
   }
   this.m_ExportWriter.WriteLine("</TABLE>");
   this.m_ExportWriter.WriteLine("</BODY></HTML>");
   //this.m_ExportWriter.WriteLine("sdfsdfasdfsdaf");
   return retHtml;
  }

//以上只是从PowerGrid上抄的一些代码,有些不是很理解,记录下来,以供以后参考!