Ir para conteúdo

Arquivado

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

joaofla123

Como exportar GridView pra Excel no C#?

Recommended Posts

Eu tenho um GridView com dados de uma SP. Como pego os dados dela e jogo num Arquivo excel através de C#?

 

Obs:

Nome da GridView: "GridRCCMais"

Arquivo Excel 2003 XLS. Caminho do arquivo: "\\Iis7-nemesis\llx_gis\Temp\RCC.xls"

Nome da planilha: "Plan1"

 

Já vi alguns exemplos da internet, mas nao entendo os comandos que fazem e nem onde personalizar. Sou iniciante.

 

Obrigado.



Observação: É um arquivo já existente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você é iniciante não comece por ai, faça coisas mais fáceis até você se acostumar com a linguagem para só depois começar a trabalhar com migração de arquivos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha este exemplo,Grid no arquivo.aspx

 

 

<form id="form1" runat="server">

    <div>
       
        <p>
            <font face="Trebuchet MS" size="2"><strong>Nome do arquivo strong>(<em>Não inclua
            a extensão “.xls”em>):<br />
            font>
            <asp:TextBox id="txtnomeArq" Width="422px" Runat="server">asp:TextBox>
            <asp:Button id="btnExportar" onclick="exportar" Runat="server" Text="Exportar para o Excel">asp:Button>
        p>
        <p>
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
        AllowPaging="true" PageSize="20" onpageindexchanging="GridView1_PageIndexChanging">
            <Columns>
                <asp:BoundField DataField="Nome" HeaderText="Nome" />
                <asp:BoundField DataField="Nota" HeaderText="Nota" />
               
                <asp:HyperLinkField DataNavigateUrlFields="Codigo,Nome"
                    DataNavigateUrlFormatString="suapgaina.aspx?cod={0}&Nome={1}"
                    DataTextField="Codigo" HeaderText="Link" Text="Link" />
            <Columns>
        <asp:GridView>      
        <p>
    <div>
    <form>

No exemplo acima temos um campo para adição do nome do arquivo , e as propriedades da GridView. No Arquivo Default.cs

Para Carregar nossa gridview Iremos criar um Datatable e carregá-lo manualmente, então teremos dois métodos, uma para criar a Table e outra para carregá-la, antes do método Page_Load declare a sua table

 

DataTable dtTable = new DataTable("Boletim");

    protected void Page_Load(object sender, EventArgs e)
    {
        MontaTabela(); // Cria tabela 


        if (!IsPostBack)
        {
           
        }




    }




  private void MontaTabela()
    {
        // Método que ira criar uma tabela para carregar na grid 
        // caso seja feita uma conexão com banco de dados este método ira preencher com os dados de la 
        try
        {
            dtTable.Columns.Add("Codigo", Type.GetType("System.Int32"));
            dtTable.Columns.Add("Nome", Type.GetType("System.String"));
            dtTable.Columns.Add("Nota", Type.GetType("System.Double"));
        }
        catch (Exception e)
        {
            Response.Write("Erro: " + e.ToString());
        }
        finally
        {
            CarregaTabela();
        }
    }


    private void CarregaTabela()
    {
        try
        {
            // Data row ira carregar os valores e adionar na tabela 
            DataRow dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 1;
            dtRow["Nome"] = "João";
            dtRow["Nota"] = 7;
            dtTable.Rows.Add(dtRow); // Adiciona na tabela 


            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 2;
            dtRow["Nome"] = "Juliana";
            dtRow["Nota"] = 8;
            dtTable.Rows.Add(dtRow);


            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 3;
            dtRow["Nome"] = "Pedro";
            dtRow["Nota"] = 10;
            dtTable.Rows.Add(dtRow);


            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 4;
            dtRow["Nome"] = "Carla";
            dtRow["Nota"] = 6;
            dtTable.Rows.Add(dtRow);




            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 5;
            dtRow["Nome"] = "Maria";
            dtRow["Nota"] = 8;
            dtTable.Rows.Add(dtRow);


        }
        catch (Exception e)
        {
            Response.Write("Error: " + e.ToString());
        }
    }
Neste Momento já temos a nossa Table , vamos incluir agora ó método de Paginação e o Método de carregar o gridview seu código ficará da seguinte forma.

 

DataTable dtTable = new DataTable("Boletim");

    protected void Page_Load(object sender, EventArgs e)
    {
        MontaTabela(); // Cria tabela 


        if (!IsPostBack)
        {
            CarregaGrid(); // Carrega a grid
        }




    }
  
    private void MontaTabela()
    {
        // Método que ira criar uma tabela para carregar na grid 
        // caso seja feita uma conexão com banco de dados este método ira preencher com os dados de la 
        try
        {
            dtTable.Columns.Add("Codigo", Type.GetType("System.Int32"));
            dtTable.Columns.Add("Nome", Type.GetType("System.String"));
            dtTable.Columns.Add("Nota", Type.GetType("System.Double"));
        }
        catch (Exception e)
        {
            Response.Write("Erro: " + e.ToString());
        }
        finally
        {
            CarregaTabela();
        }
    }


    private void CarregaTabela()
    {
        try
        {
            // Data row ira carregar os valores e adionar na tabela 
            DataRow dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 1;
            dtRow["Nome"] = "João";
            dtRow["Nota"] = 7;
            dtTable.Rows.Add(dtRow); // Adiciona na tabela 


            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 2;
            dtRow["Nome"] = "Juliana";
            dtRow["Nota"] = 8;
            dtTable.Rows.Add(dtRow);


            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 3;
            dtRow["Nome"] = "Pedro";
            dtRow["Nota"] = 10;
            dtTable.Rows.Add(dtRow);


            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 4;
            dtRow["Nome"] = "Carla";
            dtRow["Nota"] = 6;
            dtTable.Rows.Add(dtRow);




            dtRow = dtTable.NewRow();
            dtRow["Codigo"] = 5;
            dtRow["Nome"] = "Maria";
            dtRow["Nota"] = 8;
            dtTable.Rows.Add(dtRow);


        }
        catch (Exception e)
        {
            Response.Write("Error: " + e.ToString());
        }
    }
    public void CarregaGrid()
   {
        GridView1.DataSource = dtTable;
        GridView1.DataBind();
    }
    // Evento que controla a paginação 
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataSource = dtTable;
        GridView1.DataBind();


    }

 

Veja que temos os métodos que Cria e Monta nossa Table, temos o método de paginação e também temos o método que carrega nossa gridview, agora iremos criar o método que ira fazer a exportação para Excel

 

public void ExportarToExel(String saveAsFile)

    {
        // O linite de linhas do Excel é 65536
        HttpContext.Current.Response.Clear();
        HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
        HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=" + saveAsFile + ".xls");
        // Remover caracteres do header - Content-Type
        HttpContext.Current.Response.Charset = "";
        //HttpContext.Current.Response.WriteFile("style.txt")
        // desabilita o view state.
        GridView1.EnableViewState = false;
        System.IO.StringWriter sw = new System.IO.StringWriter();
        HtmlTextWriter htw = new HtmlTextWriter(sw);
        GridView1.RenderControl(htw);
        // Escrever o html no navegador
        HttpContext.Current.Response.Write(sw.ToString());
        // termina o response
        HttpContext.Current.Response.End();


    }
    public override void VerifyRenderingInServerForm(Control control)
    {


    }
Este segundo método o VerifyRenderingInServerForm , é necessário para controlar o form.Para exportar iremos usar o método chamado no “onclik = exportar “ , passando o nome do arquivo como parâmetro. Da seguinte forma

 

protected void exportar(object sender, EventArgs e)

    {
        ExportarToExel(txtnomeArq.Text);
    }

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.