none
EXPORTAÇÃO DATAGRID PARA EXCEL - VISUAL STUDIO 2008 - C# RRS feed

  • Pergunta

  • Consegui o código abaixo, mas ele só exporta o conteúdo das células, como faço para conseguir exportar, também o nome das colunas?

    {

    SaveFileDialog salvar = new SaveFileDialog(); // novo  
                    Excel.Application App; // Aplicação Excel
                    Excel.Workbook WorkBook; // Pasta
                    Excel.Worksheet WorkSheet; // Planilha
                    object misValue = System.Reflection.Missing.Value;
                    App = new Excel.Application();
                    WorkBook = App.Workbooks.Add(misValue);
                    WorkSheet = (Excel.Worksheet)WorkBook.Worksheets.get_Item(1);
                    int i = 0;
                    int j = 0;
                    // passa as celulas do DataGridView para a Pasta do Excel
                    for (i = 0; i <= dgvRegistros.RowCount - 1; i++)
                    {
                        for (j = 0; j <= dgvRegistros.ColumnCount - 1; j++)
                        {
                            DataGridViewCell cell = dgvRegistros[j, i];
                            WorkSheet.Cells[i + 1, j + 1] = cell.Value;
                        }
                    }
                    // define algumas propriedades da caixa salvar
                    salvar.Title = "Exportar para Excel";
                    salvar.Filter = "Arquivo do Excel *.xls | *.xls";
                    salvar.ShowDialog(); // mostra
                    // salva o arquivo
                    WorkBook.SaveAs(salvar.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
                    WorkBook.Close(true, misValue, misValue);
                    App.Quit(); // encerra o excel
                    MessageBox.Show("Exportado com Sucesso", "Proposta", MessageBoxButtons.OK, MessageBoxIcon.Information);}

    Desde já agradeço

    Dilson

    domingo, 21 de outubro de 2012 02:49

Respostas

  • Certo, eu também tenho usado DataGridView nos testes.

    Adicione a linha para deixar a fonte em negrito:

    WorkSheet.Cells[1, k].Font.Bold = true;


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta DilsonDG terça-feira, 23 de outubro de 2012 12:19
    terça-feira, 23 de outubro de 2012 12:15

Todas as Respostas

  • Que engraçado Dislon, um outro usuário abriu um thread sobre um erro na exportação de um DataGrid para Excel e usa deste mesmo código como base, a diferença é que o código dele exporta com o nome da coluna. Se possivel veja o dele como referencia:

    http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/2604948a-6304-4b4d-a2ce-7a924d549a12

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    domingo, 21 de outubro de 2012 23:15
  • Obrigado, Vitor

    Era só um pequeno errinho no código, só mais uma coisa, alguém sabe, por acaso, como poderia deixar na exportação em negrito o nome das colunas(header), tentei alguns recursos mas não consegui?

    Grato

    Dilson 

    terça-feira, 23 de outubro de 2012 11:01
  • Olá Dilson,

    Você teve algum problema em utilizar o código de exemplo que te passei ?? Apenas para saber, pois o usuários daquele thread tem relatado a ausência do ultimo registro quando exportamos para o Excel, isto tem acontecido com você ??

    Quanto a sua duvida de como deixa o cabeçalho em Negrito, use deste código:

    // passa as celulas do DataGridView para a Pasta do Excel
    
    for (k = 1; k < listBoxClientes.Columns.Count + 1; k++)
    {
        WorkSheet.Cells[1, k] = listBoxClientes.Columns[k - 1].HeaderText;
        WorkSheet.Cells[1, k].Font.Bold = true;
    }


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    terça-feira, 23 de outubro de 2012 11:36
  • Opa, tudo bem?

    Mais uma vez obrigado

    Quanto ao código da exportação, deu certo, o que estava faltando para mim era a parte da

    última variavel (no caso o int K) que eu não tinha no código, e o for (como ficou abaixo)

    Para mim, não deu problema de ausência do último registro

    Obs: apenas para constar eu estou usando datagrid e não listBox, certo?

    Grato

    Dilson

                

                int i = 0;
               
    int j = 0;
               
    int k = 0; // passa as celulas do DataGridView para a Pasta do Excel

               
    for (k = 1; k < listBoxClientes.Columns.Count + 1; k++)
               
    {
                   
    WorkSheet.Cells[1, k] = listBoxClientes.Columns[k - 1].HeaderText;
               
    }

               
    for (i = 0; i < listBoxClientes.Rows.Count - 1; i++)
               
    {
                   
    for (j = 0; j < listBoxClientes.Columns.Count; j++)
                   
    {
                       
    DataGridViewCell cell = listBoxClientes[j, i];
                       
    WorkSheet.Cells[i + 2, j + 1] = listBoxClientes.Rows[i].Cells[j].Value.ToString();
                   
    }
               
    }

    terça-feira, 23 de outubro de 2012 11:56
  • Certo, eu também tenho usado DataGridView nos testes.

    Adicione a linha para deixar a fonte em negrito:

    WorkSheet.Cells[1, k].Font.Bold = true;


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    • Marcado como Resposta DilsonDG terça-feira, 23 de outubro de 2012 12:19
    terça-feira, 23 de outubro de 2012 12:15