如果gridview具有分页功能,我可以将gridview导出为ex​​cel

时间:2011-10-30 19:15:06

标签: asp.net gridview

列在gridview中自动生成.Gridview有分页。如果gridview有分页,我可以将gridview导出为ex​​cel。

1 个答案:

答案 0 :(得分:1)

您可以将网格视图导出为ex​​cel .....

   public static void Export(string fileName, GridView gv)
   {
       HttpContext.Current.Response.Clear();
       HttpContext.Current.Response.AddHeader(
       "content-disposition", string.Format("attachment; filename={0}", fileName));
       HttpContext.Current.Response.ContentType = "application/ms-excel";

       using (StringWriter sw = new StringWriter())
       {
           using (HtmlTextWriter htw = new HtmlTextWriter(sw))
           {
               //  Create a form to contain the grid
               Table table = new Table();

               //  add the header row to the table
               if (gv.HeaderRow != null)
               {
                   GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                   table.Rows.Add(gv.HeaderRow);
               }

               //  add each of the data rows to the table
               foreach (GridViewRow row in gv.Rows)
               {
                   GridViewExportUtil.PrepareControlForExport(row);
                   table.Rows.Add(row);
               }

               //  add the footer row to the table
               if (gv.FooterRow != null)
               {
                   GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                   table.Rows.Add(gv.FooterRow);
               }

               //  render the table into the htmlwriter
               table.RenderControl(htw);

               //  render the htmlwriter into the response
               HttpContext.Current.Response.Write(sw.ToString());
               HttpContext.Current.Response.End();
           }
       }
   }

    //Export Gridview Data to Excel File and Save Excel file to Server Folder Rather than
   //allowing user to Open or Save it.
   public static void ExportToFolder(string fileName, GridView gv)
   {

       System.Text.StringBuilder sb = new System.Text.StringBuilder();

       using (StringWriter sw = new StringWriter(sb))
       {
           using (HtmlTextWriter htw = new HtmlTextWriter(sw))
           {
               //  Create a form to contain the grid
               Table table = new Table();

               //  add the header row to the table
               if (gv.HeaderRow != null)
               {
                   GridViewExportUtil.PrepareControlForExport(gv.HeaderRow);
                   table.Rows.Add(gv.HeaderRow);
               }

               //  add each of the data rows to the table
               foreach (GridViewRow row in gv.Rows)
               {
                   GridViewExportUtil.PrepareControlForExport(row);
                   table.Rows.Add(row);
               }

               //  add the footer row to the table
               if (gv.FooterRow != null)
               {
                   GridViewExportUtil.PrepareControlForExport(gv.FooterRow);
                   table.Rows.Add(gv.FooterRow);
               }

               //  render the table into the htmlwriter
               table.RenderControl(htw);

               //Create file
               System.IO.TextWriter w = new System.IO.StreamWriter(HttpContext.Current.Server.MapPath("~") + "\\" + fileName);
               w.Write(sb.ToString());
               w.Flush();
               w.Close();

           }
       }
   }

   private static void PrepareControlForExport(Control control)
   {
       for (int i = 0; i < control.Controls.Count; i++)
       {
           Control current = control.Controls[i];
           if (current is LinkButton)
           {
               control.Controls.Remove(current);
               control.Controls.AddAt(i, new LiteralControl((current as LinkButton).Text));
           }
           else if (current is ImageButton)
           {
               control.Controls.Remove(current);
               control.Controls.AddAt(i, new LiteralControl((current as ImageButton).AlternateText));
           }
           else if (current is HyperLink)
           {
               control.Controls.Remove(current);
               control.Controls.AddAt(i, new LiteralControl((current as HyperLink).Text));
           }
           else if (current is DropDownList)
           {
               control.Controls.Remove(current);
               control.Controls.AddAt(i, new LiteralControl((current as DropDownList).SelectedItem.Text));
           }
           else if (current is CheckBox)
           {
               control.Controls.Remove(current);
               control.Controls.AddAt(i, new LiteralControl((current as CheckBox).Checked ? "True" : "False"));
           }

           if (current.HasControls())
           {
               GridViewExportUtil.PrepareControlForExport(current);
           }
       }
   }

请浏览此链接for more info