Могу ли я экспортировать gridview в Excel, если в gridview есть подкачка

#asp.net #gridview

#asp.net #gridview

Вопрос:

Столбцы автоматически генерируются в gridview.В Gridview есть подкачка.Могу ли я экспортировать gridview в Excel, если в gridview есть подкачка.

Ответ №1:

вы можете экспортировать представление сетки в Excel…..

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

пожалуйста, перейдите по этой ссылке для получения дополнительной информации