
Como exportar um DataGridView para o Excel em C#
Este tutorial fornece um guia abrangente sobre como exportar dados de um DataGridView controle 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 amostra 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 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 SubManipulando 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 Sub btnExport_Click(ByVal sender As Object, ByVal e As EventArgs)
' Code to export data will go here
End SubExportando Dados do DataGridView
Para exportar os dados do DataGridView, primeiro precisamos referenciar o namespace IronXL:
using IronXL;Imports IronXLDentro 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 todo o arquivo Excel. - Um
WorkSheetdentro do livro é como uma página ou aba 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");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 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 iPara 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 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 FunctionSalvando 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)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 ex As Exception
MessageBox.Show("An exception occurred: " & ex.Message)
End TrySaí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 $999, 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!

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.
Artigos relacionados



