Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
55m 42s
Criar e trabalhar com arquivos do Excel é uma habilidade crucial para qualquer desenvolvedor C# que esteja criando ferramentas de geração de relatórios, exportação de dados ou interfaces de entrada de usuário. Neste artigo, analisamos detalhadamente o passo a passo apresentado por Tim Corey em seu vídeo " Criando arquivos Excel em C# ", onde ele demonstra como criar um arquivo Excel usando C#, formatá-lo e até mesmo ler dados dele - tudo utilizando a biblioteca EPPlus.
Quer você esteja procurando criar um novo caderno Excel a partir de uma List, formatar células da planilha Excel ou ler dados estruturados de volta para sua aplicação, o exemplo de Tim serve como um tutorial prático para cobrir o essencial da geração de arquivos Excel em C#.
Vamos analisar passo a passo com base no vídeo do Tim.
Tim começa explicando que o Microsoft Excel é uma das ferramentas mais importantes nos negócios. Os arquivos do Excel são fáceis de usar, extremamente versáteis e perfeitos para representar dados. Ele destaca como a criação de arquivos Excel em C# pode ser usada como substituta para soluções complexas de geração de relatórios, tornando o Excel sua ferramenta padrão para relatórios.
O objetivo: criar um aplicativo Excel usando C#, preenchê-lo com dados, aplicar alguma formatação e, em seguida, ler esse arquivo Excel.
Tim abre o Visual Studio 2019, seleciona um Aplicativo de Console (.NET Core) e nomeia a solução como ExcelDemoApp. Usar um aplicativo de console proporciona um ambiente limpo e livre de distrações para se concentrar exclusivamente no código relacionado ao Excel.
Ele atualiza o Target Framework for .NET 5.0 para aproveitar os recursos do C# 9, como a instanciação simplificada de objetos.
Para criar uma planilha do Excel, Tim instala o pacote EPPlus através do Gerenciador de Pacotes NuGet . EPPlus é uma biblioteca do Excel que funciona com arquivos .xlsx (Open XML) e oferece suporte a todas as funcionalidades do Excel, como gráficos, tabelas, estilos e fórmulas, sem a necessidade do MS Office ou do Excel Interop.
Observação: o EPPlus é gratuito para uso não comercial, mas requer uma licença para aplicações comerciais.
Ele copia a linha de aceitação da licença não comercial exigida para seu código para evitar erros de tempo de execução e adiciona o necessário "using OfficeOpenXml"; diretiva.
Usando System.IO.FileInfo, Tim define um caminho de arquivo fixo:
var file = new FileInfo(@"C:\demos\youtubedemo.xlsx");Dim file As New FileInfo("C:\demos\youtubedemo.xlsx")Este arquivo não existe inicialmente - ele será criado dinamicamente pelo programa.
Para preencher a planilha do Excel, Tim define uma classe PersonModel simples com as seguintes propriedades:
ID inteiro
string PrimeiroNome
string Sobrenome
Ele usa um método auxiliar GetSetupData() para retornar uma lista.<PersonModel> Preenchido com dados de amostra como Tim Corey, Sue Storm e Jane Smith.
No desenvolvimento moderno, bloquear a thread da interface do usuário é inaceitável. É por isso que Tim define um método assíncrono:
static async Task SaveExcelFile(List<PersonModel> people, FileInfo file)Private Shared Async Function SaveExcelFile(people As List(Of PersonModel), file As FileInfo) As TaskAntes de escrever no Excel, ele verifica se o arquivo existe e o exclui para evitar conflitos de nomes.
if (file.Exists) file.Delete();If file.Exists Then file.Delete()Tim utiliza o objeto EPPlus ExcelPackage dentro de um bloco using para garantir o descarte adequado:
using var package = new ExcelPackage(file);Using package As New ExcelPackage(file)
End UsingEle adiciona uma nova planilha à pasta de exercícios:
var ws = package.Workbook.Worksheets.Add("MainReport");Dim ws = package.Workbook.Worksheets.Add("MainReport")Usando LoadFromCollection, ele insere a lista de pessoas começando na célula "A2":
ws.Cells["A2"].LoadFromCollection(people, true);ws.Cells("A2").LoadFromCollection(people, True)Em seguida, a função AutoFitColumns() ajusta automaticamente a largura das colunas:
ws.Cells[ws.Dimension.Address].AutoFitColumns();ws.Cells(ws.Dimension.Address).AutoFitColumns()Finalmente, ele salva o arquivo do Excel :
await package.SaveAsync();Await package.SaveAsync()Para tornar o arquivo do Excel mais legível, Tim mostra como aplicar estilos:
ws.Cells["A1"].Value = "Our Cool Report";
ws.Cells["A1:C1"].Merge = true; ws.Row(1).Style.Font.Size = 24;
ws.Row(1).Style.Font.Color.SetColor(Color.Blue);
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;ws.Cells("A1").Value = "Our Cool Report"
ws.Cells("A1:C1").Merge = True
ws.Row(1).Style.Font.Size = 24
ws.Row(1).Style.Font.Color.SetColor(Color.Blue)
ws.Column(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Centerws.Row(2).Style.Font.Bold = true;
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;ws.Row(2).Style.Font.Bold = True
ws.Row(2).Style.HorizontalAlignment = ExcelHorizontalAlignment.Centerws.Column(3).Width = 20;ws.Column(3).Width = 20Esta seção demonstra formatação avançada, como:
Células mescladas
Estilização da fonte
Cores de fundo
Alinhamento de linhas/colunas
Ajustes de largura
Essas opções imitam as características típicas de formatação do MS Office Excel .
Agora que gravamos os dados no Excel, é hora de lê-los de volta em C# .
Tim apresenta o método:
static async Task<List<PersonModel>> LoadExcelFile(FileInfo file)Private Shared Async Function LoadExcelFile(file As FileInfo) As Task(Of List(Of PersonModel))Ele configura contadores de linhas e colunas:
int row = 3; // Skip title and header rows int col = 1;Dim row As Integer = 3 ' Skip title and header rows
Dim col As Integer = 1Utilizando um laço while, ele verifica se há células não vazias e lê os valores:
while (!string.IsNullOrWhiteSpace(ws.Cells[row, col].Value?.ToString()))While Not String.IsNullOrWhiteSpace(ws.Cells(row, col).Value?.ToString())Dentro do loop, os valores são lidos e analisados:
p.Id = int.Parse(ws.Cells[row, col].Value.ToString());
p.FirstName = ws.Cells[row, col + 1].Value.ToString();
p.LastName = ws.Cells[row, col + 2].Value.ToString();p.Id = Integer.Parse(ws.Cells(row, col).Value.ToString())
p.FirstName = ws.Cells(row, col + 1).Value.ToString()
p.LastName = ws.Cells(row, col + 2).Value.ToString()A Lista<PersonModel> é preenchido e retornado.
Tim percorre a lista retornada e escreve cada entrada no console:
foreach (var p in peopleFromExcel)
{
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}");
}For Each p In peopleFromExcel
Console.WriteLine($"{p.Id} {p.FirstName} {p.LastName}")
NextPara demonstrar a flexibilidade do Excel como ferramenta de entrada de dados, Tim adiciona manualmente novos registros ("Bill Smith", "Mary White") diretamente no arquivo do Excel. Ao executar o aplicativo novamente, essas entradas são importadas sem alterar o código, comprovando o potencial do Excel como interface de entrada de dados.
Tim destaca casos de uso para a solução em C# para Excel:
Exportar tabelas de banco de dados para o Excel
Importação de dados inseridos pelos usuários finais
Utilizando o Excel como painel de relatórios
Criação de planilhas estruturadas para processamento de dados
E tudo isso sem depender do Microsoft.Office.Interop.Excel, que exige que o Excel esteja instalado.
Tim explica que os arquivos .xlsx criados programaticamente não contêm todos os metadados até serem abertos e salvos no Excel. É por isso que o tamanho do arquivo aumenta depois de abri-lo no aplicativo Excel.
Ele também observa que o EPPlus é uma biblioteca refinada e robusta, com suporte para:
Gráficos
Imagens
Minigráficos
Fórmulas
Configuração da página
Fronteiras
Formatação de células
Criar arquivos do Excel em C# não precisa ser difícil nem caro. Graças à biblioteca EPPlus Excel, os desenvolvedores podem criar documentos do Excel ricos em recursos programaticamente, sem precisar do MS Office. Como Tim Corey demonstra, com apenas algumas linhas de código você pode:
Criar um arquivo do Excel
Preencher linhas e colunas
Aplicar penteado
Ler dados de volta
Utilize o Excel como interface de usuário voltada para o usuário.
Isso a torna uma escolha fantástica para ferramentas de geração de relatórios leves, importação/exportação de dados ou simplesmente para fornecer aos seus usuários uma interface com a qual eles já estão familiarizados.
Portanto, da próxima vez que você estiver desenvolvendo um projeto e precisar exportar ou consumir dados do Excel, experimente implementar o código de exemplo do vídeo de Tim Corey - e traga o poder do Excel para seus aplicativos .NET Framework ou .NET Core .
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy