DataTable數據導出成Excel文件的小例子_.Net教程

      編輯Tag賺U幣

      推薦:ASP.NET筆記之 Repeater的使用
      本篇文章小編為大家介紹,ASP.NET筆記之 Repeater的使用。需要的朋友參考下

      復制代碼 代碼如下:www.wf0088.com

      ///
      /// 將DataTable中的數據導出到指定的Excel文件中
      ///
      /// Web頁面對象
      /// 包含被導出數據的DataTable對象
      /// Excel文件的名稱
      public static void Export(System.Web.UI.Page page,System.Data.DataTable tab,string FileName)
      {
      System.Web.HttpResponse httpResponse = page.Response;
      System.Web.UI.WebControls.DataGrid dataGrid=new System.Web.UI.WebControls.DataGrid();
      dataGrid.DataSource=tab.DefaultView;
      dataGrid.AllowPaging = false;
      dataGrid.HeaderStyle.BackColor = System.Drawing.Color.Green;
      dataGrid.HeaderStyle.HorizontalAlign = HorizontalAlign.Center;
      dataGrid.HeaderStyle.Font.Bold = true;
      dataGrid.DataBind();
      httpResponse.AppendHeader("Content-Disposition","attachment;filename="+HttpUtility.UrlEncode(FileName,System.Text.Encoding.UTF8)); //filename="*.xls";
      httpResponse.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312");
      httpResponse.ContentType ="application/ms-excel";
      System.IO.StringWriter tw = new System.IO.StringWriter() ;
      System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter (tw);
      dataGrid.RenderControl(hw);

      string filePath = page.Server.MapPath("..")+"http://Files//" +FileName;
      System.IO.StreamWriter sw = System.IO.File.CreateText(filePath);
      sw.Write(tw.ToString());
      sw.Close();

      DownFile(httpResponse,FileName,filePath);

      httpResponse.End();
      }
      private static bool DownFile(System.Web.HttpResponse Response,string fileName,string fullPath)
      {
      try
      {
      Response.ContentType = "application/octet-stream";

      Response.AppendHeader("Content-Disposition","attachment;filename=" +
      HttpUtility.UrlEncode(fileName,System.Text.Encoding.UTF8) + ";charset=GB2312");
      System.IO.FileStream fs= System.IO.File.OpenRead(fullPath);
      long fLen=fs.Length;
      int size=102400;//每100K同時下載數據
      byte[] readData = http://www.wf0088.com/yongle_tianya/archive/2011/10/24/new byte[size];//指定緩沖區的大小
      if(size>fLen)size=Convert.ToInt32(fLen);
      long fPos=0;
      bool isEnd=false;
      while (!isEnd)
      {
      if((fPos+size)>fLen)
      {
      size=Convert.ToInt32(fLen-fPos);
      readData = http://www.wf0088.com/yongle_tianya/archive/2011/10/24/new byte[size];
      isEnd=true;
      }
      fs.Read(readData, 0, size);//讀入一個壓縮塊
      Response.BinaryWrite(readData);
      fPos+=size;
      }
      fs.Close();
      System.IO.File.Delete(fullPath);
      return true;
      }
      catch
      {
      return false;
      }
      }

      分享:.net 中的SqlConnection連接池機制詳解
      .net 中通過 SqlConnection 連接 sql server,我們會發現第一次連接時總是很耗時,但后面連接就很快,這個其實和SqlConnection 的連接池機制有關

      來源:模板無憂//所屬分類:.Net教程/更新時間:2013-04-24
      相關.Net教程