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: