Showing posts with label Excel. Show all posts
Showing posts with label Excel. Show all posts

Thursday, March 20, 2014

Export GridView to excel in Visual Webpart in SharePoint

Declare GridView and Button as below

<asp:GridView ID="gridViewPermission"  runat="server" >
     </asp:GridView>

<asp:Button ID="buttonExportUsers" runat="server" Text="Export Users" onclick="ButtonExportUsers_Click" OnClientClick="window.setTimeout(function() { _spFormOnSubmitCalled = false; }, 10);"/>

Note the OnClientClick event for button

There are two approaches to export it

1. Export to csv file
2. Export to excel file



1. Export to csv file

            StringBuilder sb = new StringBuilder();
            GridViewRow grHeader = gridViewPermission.HeaderRow;
            int counter = 0;

            foreach (TableCell tc in grHeader.Cells)
            {
                sb.Append("" + tc.Text + " ,");
                counter++;
            }
            sb.AppendLine();

            foreach (GridViewRow gr in gridViewPermission.Rows)
            {
                foreach (TableCell tc in gr.Cells)
                {
                    sb.Append("" + tc.Text + " ,");
                }
                sb.AppendLine();
            }

            Response.Clear();
            Response.ClearHeaders();
            Response.ClearContent();
            Response.AddHeader(" content-disposition", " attachment; filename=" + strSite + "_Users_" + strDate + ".csv");
            Response.ContentType = " text/csv";
         
            Response.AddHeader(" Pragma", " public");
            Response.Write(sb.ToString());
            Response.End();


2. Export to excel file

Response.ClearContent();
            Response.AddHeader("content-disposition", " attachment; filename=" + strSite + "_Users_" + strDate + ".xls");
            Response.ContentType = "application/vnd.ms-excel";
            string tab = string.Empty;
            GridViewRow grHeader = gridViewPermission.HeaderRow;
            foreach (TableCell headerCell in grHeader.Cells)
            {
               Response.Write(tab + headerCell.Text );
               tab = "\t";
            }

            Response.Write("\n");
            foreach (GridViewRow gridViewRow in gridViewPermission.Rows)
            {
                tab = string.Empty;
                foreach (TableCell dataCell in gridViewRow.Cells)
                {
                    Response.Write(tab + dataCell.Text.Replace(CommonFunctions.SpaceText,string.Empty) );
                    tab = "\t";
                }
                Response.Write("\n");
            }
            Response.End();

References - http://www.fewlines4biju.com/2011/11/export-gridview-data-to-excel-aspnet.html