Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tcn

Metodo Generico de Exportar GridView para Excel

Recommended Posts

Boas pessoas, tudo bem?


Eu estou tentando criar esse método de forma genérica para ser usada varias vezes em varias situações

Segue o código abaixo

 

 

  public static void ExportaGridToExcel(GridView gr)
        {
            int intLinha = 0;
            HttpContext.Current.Response.Clear();
            HttpContext.Current.Response.AddHeader("content-disposition", string.Format("attachment;filename=Relatorio {0}.xls", DateTime.Now.ToString("dd/MM/yyyy").Substring(0, 2) + "-" + DateTime.Now.Month.ToString() + "-" + DateTime.Now.Year.ToString()));

            HttpContext.Current.Response.ContentType = "application/ms-excel";
            HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.Default;

            StringBuilder sb = new StringBuilder();
            sb.Append("<style type=\"text/css\">\r\n");
            sb.Append(".tabHead\r\n");
            sb.Append("{\r\n");
            sb.Append("   background-color: #000080;\r\n");
            sb.Append("   border: solid 1px black;\r\n");
            sb.Append("   color: White;\r\n");
            sb.Append("   font-weight: bold;\r\n");
            sb.Append("}\r\n");
            sb.Append(".tabRow\r\n");
            sb.Append("{\r\n");
            sb.Append("   border: solid 1px black;\r\n");
            sb.Append("}\r\n");
            sb.Append("</style>\r\n\r\n");

            //Header
            sb.AppendFormat("<table>\r\n");
            sb.AppendFormat("<tr>\r\n");
            sb.AppendFormat("</tr>\r\n");
            sb.AppendFormat("<tr>\r\n");
            sb.AppendFormat("\t<td></td>\r\n");
            sb.AppendFormat("\t<td></td>\r\n");
            sb.AppendFormat("\t<td></td>\r\n");
            sb.AppendFormat("\t<td class=\"tabHead\">" + DateTime.Now.ToString("dd/MM/yyyy") + "</td>\r\n");
            sb.AppendFormat("</tr>\r\n");
            sb.AppendFormat("</table>\r\n");

            sb.AppendFormat("<table>\r\n");
            sb.AppendFormat("<thead>\r\n");
            sb.AppendFormat("<tr>\r\n");
            sb.AppendFormat("</tr>\r\n");
            sb.AppendFormat("<tr>\r\n");

            for (int i = 0; i < gr.Columns.Count; i++)
			{
			    sb.AppendFormat("\t<td class=\"tabHead\">" + gr.Columns[i].HeaderText +  "</td>\r\n");
              
			}
            sb.AppendFormat("</tr>\r\n");
            sb.AppendFormat("</thead>\r\n");
            sb.AppendFormat("<tbody>\r\n");
            sb.AppendFormat("<tr>\r\n");



            for (int a = 0; a < gr.Columns.Count; a++)
            {
                GridViewRow row = gr.Rows[i];

                for (int b = 0; b < row.Cells.Count; b++)
                {
                    sb.AppendFormat("\t<td class=\"tabRow\">" + ((row.Cells[b].Text != null) ? row.Cells[b].Text : "").ToString() + "</td>\r\n");
                    sb.Append("\n");
                }
            }           
           
           sb.AppendFormat("</tr>\r\n");

            //Footer
            sb.AppendFormat("</tbody>\r\n");
            sb.AppendFormat("</table>\r\n");

            HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            HttpContext.Current.Response.Write(sb.ToString());
            HttpContext.Current.Response.End();



        }

o problema é que ele esta gerando a Cells na mesma linha deveria quebrar as linhas e fazer linha a linha, alguém sabe onde estou errando ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a Demora mas eu ja descobri o que era o problema era no TD precisava fechar após terminar a Linha,


Estava enviando o grid para excel de forma generica

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.