C# - Exportando dados de um DataGridView para o Excel (revisão)


Neste tutorial vamos rever como podemos exportar dados a partir de um controle DataGridView para uma planilha Excel usando a linguagem C#.

Os recursos usados no projeto deste artigo foram:

Criando o projeto

Abra o VS Express 2012 for Windows Desktop e crie um novo projeto (File-> New Project) com o nome Exportar_Excel usando o template Windows Forms Application;

No formulário form1.cs inclua os seguintes controles:

Disponha os controles no formulário conforme o leiaute abaixo:

No menu PROJECT clique em Add Reference e inclua uma referência ao Microsoft Excel conforme a seguir:

A primeira tarefa será preencher o controle DataGridView com dados e podemos fazer isso de diversas formas : importar de um arquivo XML, carregar a partir de um banco de dados, de um arquivo texto, etc.

A mais simples é criar um DataTable definir alguns dados e exibi-los no DataGridView.

Para isso vamos criar uma rotina chamada CarregaGrid() com o seguinte código:

 private void carregaGrid()
        {
            try
            {
                DataTable dt = new DataTable();
                dt.Columns.Add("Codigo", typeof(int));
                dt.Columns.Add("Nome", typeof(string));
                dt.Columns.Add("Admissao", typeof(DateTime));
                dt.Columns.Add("Setor", typeof(int));
                dt.Columns.Add("Salario", typeof(double));
                DataRow dr = dt.NewRow();
                dr["Codigo"] = 1;
                dr["Nome"] = "Macoratti";
                dr["Admissao"] = DateTime.Now;
                dr["Setor"] = 20;
                dr["Salario"] = 15000;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Codigo"] = 2;
                dr["Nome"] = "Miriam";
                dr["Admissao"] = DateTime.Now;
                dr["Setor"] = 30;
                dr["Salario"] = 25000;
                dt.Rows.Add(dr);
                dr = dt.NewRow();
                dr["Codigo"] = 3;
                dr["Nome"] = "Jefferson";
                dr["Admissao"] = DateTime.Now;
                dr["Setor"] = 40;
                dr["Salario"] = 18000;
                dt.Rows.Add(dr);
                dgvDados.DataSource = dt;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Erro " + ex.Message);
            }
        }

A rotina acima será chamada no evento Load do formulário :

private void Form1_Load(object sender, EventArgs e)
{
            carregaGrid();
}

A seguir criamos uma instância da aplicação Excel em nosso projeto:

Microsoft.Office.Interop.Excel.Application XcelApp = new Microsoft.Office.Interop.Excel.Application();

No evento Click do botão -  Exportar para o Excel >> - temos o código onde percorremos cada linha e célula do GridView e exportando para o Excel:

   private void btnExportar_Click(object sender, EventArgs e)
        {
            if (dgvDados.Rows.Count > 0)
            {
                try
                {
                    XcelApp.Application.Workbooks.Add(Type.Missing);
                    for (int i = 1; i < dgvDados.Columns.Count + 1; i++)
                    {
                        XcelApp.Cells[1, i] = dgvDados.Columns[i - 1].HeaderText;
                    }
                    //
                    for (int i = 0; i < dgvDados.Rows.Count-1; i++)
                    {
                        for (int j = 0; j < dgvDados.Columns.Count; j++)
                        {
                            XcelApp.Cells[i + 2, j + 1] = dgvDados.Rows[i].Cells[j].Value.ToString();
                        }
                    }
                    //
                    XcelApp.Columns.AutoFit();
                    //
                    XcelApp.Visible = true;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro : " + ex.Message);
                    XcelApp.Quit();
                }
            }
        }

A seguir vemos os dados do DataGridView :

E a seguir o resultado final do processamento após a exportação para o Excel:

Simples, prático e útil...

Pegue projeto completo aqui : Exportar_Excel.zip

Salmos 5:9 Porque não há fidelidade na boca deles; as suas entranhas são verdadeiras maldades, a sua garganta é um sepulcro aberto; lisonjeiam com a sua língua.
Salmos 5:10 Declara-os culpados, ó Deus; que caiam por seus próprios conselhos; lança-os fora por causa da multidão de suas transgressões, pois se revoltaram contra ti.


Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira...

Quer aprender C# ??

Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C#
 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti