Como exportar um DataGridView para o Excel em C#
Este tutorial fornece um guia abrangente sobre como exportar dados de um DataGridView control em uma Aplicação Windows Forms para um arquivo Excel usando a biblioteca IronXL em C#. Nosso foco será criar uma experiência tranquila para iniciantes que desejam integrar a funcionalidade do Microsoft Excel em seus projetos C#.
How to Export DataGridView to Excel in C
- Crie um projeto Windows Forms C# no Visual Studio.
- Instale a Biblioteca Excel usando o Gerenciador de Pacotes NuGet.
- Crie um DataGridView e um botão na interface de usuário do Windows Form.
- Anexe uma fonte de dados ao DataGridView.
- Aplique a lógica de exportação de dados no manipulador de eventos de clique do botão.
Começando com IronXL
O IronXL é uma biblioteca robusta que simplifica o processo de trabalhar com documentos Excel em aplicativos .NET Framework. Permite exportar grandes arquivos Excel, lidar com fontes de dados complexas e fornecer amplo suporte para manipulação de arquivos Excel .NET sem a necessidade de ter a Biblioteca de Objetos do Microsoft Excel. Vamos configurar nosso projeto.
Configurando Seu Projeto
1. Crie uma Nova Aplicação Windows Forms
Abra o Visual Studio e crie uma nova Aplicação Windows Forms. Esta será a base do nosso projeto, onde implementaremos a funcionalidade para exportar dados do DataGridView para um arquivo Excel.

2. Instale o IronXL
O IronXL pode ser facilmente adicionado ao seu projeto. No Visual Studio, navegue até a opção 'Gerenciar Pacotes NuGet', procure por IronXL e instale-o. Esta ação cuidará de todas as dependências necessárias para exportar DataGridView para Excel em C#.

3. Prepare a Interface do Usuário
Adicione um controle DataGridView ao seu formulário. Este controle conterá os dados que pretendemos exportar. Além disso, adicione um botão para acionar o processo de exportação. Você pode rotulá-lo como 'Exportar para Excel' ou algo similar.
Implementando a Funcionalidade de Exportação
Nesta seção, ensinaremos os detalhes específicos de como programar a funcionalidade que permite exportar dados de um DataGridView em uma aplicação Windows Forms para um documento Excel usando o IronXL.
Construindo a Aplicação
Primeiramente, você precisa adicionar um controle DataGridView ao seu formulário. Este controle é o componente primário onde seus dados serão exibidos antes de serem exportados. Você pode facilmente adicioná-lo arrastando um DataGridView da caixa de ferramentas no Visual Studio para o seu formulário. Podemos também adicionar um botão para exportar dados do DataGridView para arquivos Excel.

O próximo passo é carregar os dados no DataGridView. Esses dados podem vir de várias fontes, como um DataTable ou um DataSet. Se você está começando, pode querer criar um novo DataSet ou DataTable programaticamente e preenchê-lo com dados de exemplo para ver como funciona. Alternativamente, você pode importar dados de uma fonte externa. A chave aqui é vincular sua fonte de dados ao DataGridView, que efetivamente liga seus dados à grade. Uma vez que seus dados estejam vinculados ao DataGridView, você os verá exibidos na grade em seu formulário.
private void BindDataToDataGridView()
{
// Create a new DataTable.
DataTable dataTable = new DataTable();
// Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Department", typeof(string));
dataTable.Columns.Add("Joining Date", typeof(DateTime));
// Add sample data to the DataTable.
for (int i = 1; i <= 25; i++)
{
dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
}
// Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable;
}
private void BindDataToDataGridView()
{
// Create a new DataTable.
DataTable dataTable = new DataTable();
// Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", typeof(int));
dataTable.Columns.Add("Name", typeof(string));
dataTable.Columns.Add("Department", typeof(string));
dataTable.Columns.Add("Joining Date", typeof(DateTime));
// Add sample data to the DataTable.
for (int i = 1; i <= 25; i++)
{
dataTable.Rows.Add(i, "Employee " + i, "Department " + (i % 5 + 1), DateTime.Now.AddDays(-i * 15));
}
// Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable;
}
Private Sub BindDataToDataGridView()
' Create a new DataTable.
Dim dataTable As New DataTable()
' Define columns for the DataTable.
dataTable.Columns.Add("Employee ID", GetType(Integer))
dataTable.Columns.Add("Name", GetType(String))
dataTable.Columns.Add("Department", GetType(String))
dataTable.Columns.Add("Joining Date", GetType(DateTime))
' Add sample data to the DataTable.
For i As Integer = 1 To 25
dataTable.Rows.Add(i, "Employee " & i, "Department " & (i Mod 5 + 1), DateTime.Now.AddDays(-i * 15))
Next i
' Bind the DataTable to the DataGridView.
dataGridView1.DataSource = dataTable
End Sub
Manipulando o Evento de Clique do Botão
Nosso principal ponto de interação com o usuário será um botão dentro de nosso Windows Form. Este botão, quando clicado, inicia o processo de exportação. Aqui está como configurar essa interação:
- No seu Windows Form, você deve ter um botão dedicado para exportar os dados do DataGridView.
- Este botão possui um método manipulador de eventos no seu código C#. Este método é acionado quando o usuário clica no botão.
private void btnExport_Click(object sender, EventArgs e)
{
// Code to export data will go here
}
private void btnExport_Click(object sender, EventArgs e)
{
// Code to export data will go here
}
Private Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
' Code to export data will go here
End Sub
Exportando Dados do DataGridView
Para exportar os dados do DataGridView, primeiro precisamos referenciar o namespace IronXL:
using IronXL;
using IronXL;
Imports IronXL
Dentro do manipulador de eventos, o primeiro passo é inicializar um novo workbook e worksheet usando o IronXL. É aqui que nossos dados do DataGridView serão transferidos.
- Um objeto
WorkBookrepresenta o arquivo Excel inteiro. - Um
WorkSheetdentro do workbook é como uma página ou guia individual em um arquivo Excel.
Aqui, criamos um workbook e depois adicionamos uma worksheet a ele. A worksheet é nomeada "ExportedData", mas você pode escolher qualquer nome que se encaixe no contexto do seu aplicativo.
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("ExportedData");
Dim workbook As WorkBook = WorkBook.Create()
Dim worksheet As WorkSheet = workbook.CreateWorkSheet("ExportedData")
Populando a Planilha Excel
O próximo passo envolve iterar pelas linhas e colunas do seu DataGridView e copiar os dados de cada célula para a célula correspondente na worksheet Excel.
- O loop externo percorre cada linha, enquanto o loop interno atravessa cada coluna dentro da respectiva linha.
- Atribuímos o valor de cada célula no DataGridView à célula correspondente na worksheet Excel. Isso é feito usando os índices
i(para linhas) ej(para colunas).
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
// Convert row and column index to Excel cell address format
string cellAddress = ConvertToCellAddress(i, j);
worksheet[cellAddress].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
// Convert row and column index to Excel cell address format
string cellAddress = ConvertToCellAddress(i, j);
worksheet[cellAddress].Value = dataGridView1.Rows[i].Cells[j].Value.ToString();
}
}
For i As Integer = 0 To dataGridView1.Rows.Count - 1
For j As Integer = 0 To dataGridView1.Columns.Count - 1
' Convert row and column index to Excel cell address format
Dim cellAddress As String = ConvertToCellAddress(i, j)
worksheet(cellAddress).Value = dataGridView1.Rows(i).Cells(j).Value.ToString()
Next j
Next i
Para converter os índices de linha e coluna em um endereço de célula Excel, você pode usar um método auxiliar como este:
private string ConvertToCellAddress(int row, int column)
{
// Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
// The following code converts a column index to this format.
string columnLabel = "";
while (column >= 0)
{
columnLabel = (char)('A' + column % 26) + columnLabel;
column = column / 26 - 1;
}
// Rows in Excel are labeled as 1, 2, 3, ..., n
// Adding 1 because Excel is 1-based and our loop is 0-based.
string rowLabel = (row + 1).ToString();
return columnLabel + rowLabel;
}
private string ConvertToCellAddress(int row, int column)
{
// Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
// The following code converts a column index to this format.
string columnLabel = "";
while (column >= 0)
{
columnLabel = (char)('A' + column % 26) + columnLabel;
column = column / 26 - 1;
}
// Rows in Excel are labeled as 1, 2, 3, ..., n
// Adding 1 because Excel is 1-based and our loop is 0-based.
string rowLabel = (row + 1).ToString();
return columnLabel + rowLabel;
}
Private Function ConvertToCellAddress(ByVal row As Integer, ByVal column As Integer) As String
' Columns in Excel are labeled as A, B, C, ..., Z, AA, AB, ..., etc.
' The following code converts a column index to this format.
Dim columnLabel As String = ""
Do While column >= 0
columnLabel = ChrW(AscW("A"c) + column Mod 26) & columnLabel
column = column \ 26 - 1
Loop
' Rows in Excel are labeled as 1, 2, 3, ..., n
' Adding 1 because Excel is 1-based and our loop is 0-based.
Dim rowLabel As String = (row + 1).ToString()
Return columnLabel & rowLabel
End Function
Salvando o Arquivo Excel
Uma vez que todos os dados são transferidos, o próximo passo é salvar este workbook como um arquivo Excel. Este passo cria um arquivo Excel no seu sistema no caminho especificado.
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx");
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
workbook.SaveAs("DataGridViewExport.xlsx")
MessageBox.Show("Data exported successfully!", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information)
Tratamento de erros
Em qualquer processo de exportação de dados, é vital tratar as exceções para garantir a estabilidade do aplicativo. Envolver a lógica de exportação em um bloco try-catch garante que quaisquer problemas durante a exportação (como permissões de acesso a arquivos, problemas de formato de dados, etc.) sejam capturados e tratados graciosamente.
try
{
// Export logic
}
catch (Exception ex)
{
MessageBox.Show("An exception occurred: " + ex.Message);
}
try
{
// Export logic
}
catch (Exception ex)
{
MessageBox.Show("An exception occurred: " + ex.Message);
}
Try
' Export logic
Catch ex As Exception
MessageBox.Show("An exception occurred: " & ex.Message)
End Try
Saída
Uma vez que executamos o programa, esta interface aparecerá:

Aqui você pode ver que os dados são mostrados no DataGridView. Agora, clique no botão Exportar. Ele exportará os dados do DataGridView para o arquivo Excel.

Aqui, você pode ver que uma caixa de mensagem aparece, e os dados são exportados para o arquivo Excel. Aqui está o arquivo Excel de saída:

Conclusão
Ao seguir este guia, agora você tem uma ferramenta básica, mas poderosa para exportar dados do DataGridView para um arquivo Excel usando C# e IronXL. Esta funcionalidade é crucial para aplicativos que exigem análise de dados, relatórios ou simplesmente a transferência de dados entre formatos diferentes. Lembre-se, experimentar diferentes recursos do controle DataGridView e da biblioteca IronXL pode levar a implementações mais personalizadas e avançadas.
O IronXL oferece uma avaliação gratuita que você pode usar para explorar seus recursos. A licença começa a partir de $liteLicense, o que é um investimento que vale a pena para profissionais e organizações que procuram uma solução confiável e eficiente para manipulação de arquivos Excel em aplicativos .NET.
Sua jornada não termina aqui. Continue explorando mais recursos do IronXL e outras maneiras de aprimorar seus aplicativos Windows Forms. Boa programação!
Perguntas frequentes
Como posso exportar dados de um DataGridView para um arquivo Excel em C#?
É possível exportar dados de um DataGridView para um arquivo Excel em C# usando a biblioteca IronXL. Isso envolve a criação de um projeto Windows Forms, a instalação do IronXL via NuGet e a implementação da lógica para transferir os dados do DataGridView para uma planilha do Excel.
Quais são os passos envolvidos na configuração de um DataGridView para exportação para o Excel?
Os passos incluem criar um DataGridView em um projeto Windows Forms, vinculá-lo a uma fonte de dados, adicionar um botão ao formulário e escrever a lógica de exportação no manipulador de eventos de clique do botão usando a biblioteca IronXL.
Como faço para instalar o IronXL em um projeto do Visual Studio?
Para instalar o IronXL em um projeto do Visual Studio, acesse "Gerenciar Pacotes NuGet", procure por IronXL e instale-o para lidar com todas as dependências necessárias para exportar o DataGridView para o Excel.
Posso exportar arquivos grandes do Excel usando o IronXL?
Sim, o IronXL permite a exportação de arquivos Excel grandes, oferecendo funcionalidades robustas para lidar com conjuntos de dados extensos sem a necessidade da Biblioteca de Objetos do Microsoft Excel.
Qual é a função do botão no tutorial de exportação do DataGridView?
O botão no tutorial inicia o processo de exportação. Ao clicar nele, a lógica para transferir dados do DataGridView para um arquivo Excel usando a biblioteca IronXL é executada.
Como o IronXL lida com a transferência de dados do DataGridView para o Excel?
O IronXL facilita a transferência de dados percorrendo as linhas e colunas do DataGridView e copiando os dados de cada célula para as células correspondentes na planilha do Excel.
Como posso gerenciar erros durante o processo de exportação com o IronXL?
Você pode gerenciar erros envolvendo sua lógica de exportação em um bloco try-catch para capturar e tratar exceções, garantindo um funcionamento tranquilo mesmo quando ocorrerem problemas como permissões de acesso a arquivos.
Como faço para salvar um arquivo do Excel após exportar dados do DataGridView?
Após a transferência dos dados para a planilha do Excel usando o IronXL, você pode salvar o arquivo em seu sistema utilizando o método SaveAs do IronXL.
Existe um período de teste gratuito do IronXL para experimentar suas funcionalidades?
Sim, o IronXL oferece um período de avaliação gratuito, permitindo que os usuários explorem seus recursos para manipulação de arquivos Excel em aplicativos .NET. O licenciamento está disponível para desenvolvimento adicional.



