none
relatorios excel com dados do gridview RRS feed

  • Pergunta

  • Olá galera,

    Seguinte, tenho uma aplicação [ C# Windows Form ] onde nela eu posso realizar uma pesquisa com um intervalo de datas, até sem problemas.

    Preciso que esses dados seja salvos em um arquivo excel. Exemplo: o usuário clica no botão "relatório" e os dados do gridview serão salvos em um documento em excel. Já achei exemplos em Asp.net com C#, mas não consegui adaptar a minha aplicação. Nunca fiz isso e gostaria de saber se alguém pode me ajudar nessa.

    Desde já agradeço !

    sexta-feira, 14 de setembro de 2012 11:34

Todas as Respostas

  • Olá.

    Tentei utilizar esse exemplo

    this.Response.Clear()
    this.Response.AddHeader("content-disposition", "attachment;filename=NomeDoArquivo.xls"));
    
    this.Response.ContentType = "application/vnd.ms-excel";
    
    StringWriter Html = new StringWriter();
    HtmlTextWriter Excel = new HtmlTextWriter(Html);
    
    Excel.WriteBreak();
    Excel.WriteBreak();
    grid.RenderControl(Excel);
    Excel.WriteBreak();
    
    this.Respose.Write(Html);
    this.Response.End();
    
    
    
    


    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    sexta-feira, 14 de setembro de 2012 12:30
  • Marcos, bom dia.

    Tentei utilizar aqui e deu varios erros.

    Esse exemplo foi feito em Asp.Net correto ?

    sexta-feira, 14 de setembro de 2012 12:37
  • Olá

    Isso. Você está usando uma aplicação desktop?

    Obrigado.


    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    sexta-feira, 14 de setembro de 2012 14:40
  • Sim, é uma aplicação Windows Form (Desktop)
    sexta-feira, 14 de setembro de 2012 15:00
  • Olá.

    Veja se esse link ajuda

    http://www.eggheadcafe.com/community/csharp/2/10037190/c-30--exporting-data-from-a-datagridview-to-excel-120.aspx

    Obrigado.



    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    sexta-feira, 14 de setembro de 2012 16:41
  • o código apresenta o seguinte erro " Índice inválido. (Exceção de HRESULT: 0x8002000B (DISP_E_BADINDEX)) ", o que poderia ser ?
    sexta-feira, 14 de setembro de 2012 17:59
  • Em que momento você teve esse erro? Poderia postar seu código?

    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    quarta-feira, 19 de setembro de 2012 11:58
  • Tentei usar o artigo que eu escrevi. Talvez ajude.

    http://marquinhosnet.wordpress.com/2012/09/19/exportar-para-excel-desktop/

    Sds.


    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    quarta-feira, 19 de setembro de 2012 16:34
  • Utilizei o código e ele me gerou 956 erros

    string fileName = "";

     // Criando componente para salvar o arquivo no computador
     SaveFileDialog saveFileDialog = new SaveFileDialog();
     saveFileDialog.CheckPathExists = true;
     saveFileDialog.AddExtension = true;
     saveFileDialog.ValidateNames = true;
     saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
     saveFileDialog.DefaultExt = ".xls";
     saveFileDialog.Filter = "Microsoft Excel Workbook (*.xls)|*.xls";

     if (saveFileDialog.ShowDialog() == DialogResult.OK)
     {
     fileName = saveFileDialog.FileName;

     var excelApp = new Excel.Application();

     // Deixa o objeto visivel
     excelApp.Visible = true;

     // Criando uma planilha no excel
     excelApp.Workbooks.Add();

     int ContadorLinha = dgvdados.Rows.Count;
     int ContadorColuna = dgvdados.Columns.Count;

     // Criando cabeçalho
     for (int i = 1; i < ContadorColuna + 1; i++)
     {
        excelApp.Cells[1, i] = dgvPessoa.Columns[i - 1].HeaderText;
     }

     // Criando rodapé
     for (int i = 0; i < ContadorLinha; i++)
     {
     for (int j = 0; j < ContadorColuna; j++)
     {
     if (dgvdados.Rows[i].Cells[j].Value == null)
     continue;

     excelApp.Cells[i + 2, j + 1] = dgvdados.Rows[i].Cells[j].Value.ToString();
     }
     }

     // Salvando as informações no Excel
     excelApp.ActiveWorkbook.SaveCopyAs(fileName);
     excelApp.ActiveWorkbook.Saved = true;
     excelApp.Quit();

     MessageBox.Show("Arquivo salvo com sucesso.");
                  }            

    quarta-feira, 19 de setembro de 2012 19:25
  • Você adicionou a referência conforme o exemplo no blog?

    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    quarta-feira, 19 de setembro de 2012 21:00
  • sim

    quinta-feira, 20 de setembro de 2012 03:02
  • Quais foram os erros gerados?

    Marcos Aguiar Jr - Brazil blog: https://marquinhosnet.wordpress.com/

    sexta-feira, 21 de setembro de 2012 11:28