Lendo Arquivos Excel em C# com Bibliotecas Livres e de Código Aberto

Você já se encontrou lutando para ler arquivos Excel diretamente em suas aplicações C#? Se sim, você não está sozinho! Muitos desenvolvedores enfrentam o desafio de extrair dados de planilhas Excel sem depender de processos manuais. A boa notícia é que existem métodos eficientes e gratuitos para conseguir isso usando bibliotecas de código aberto. Neste post do blog, exploraremos como você pode ler arquivos Excel (.xls) diretamente de um programa C#, eliminando a necessidade de passos manuais tediosos.

O Problema: Processamento Manual de Arquivos Excel

Tradicionalmente, muitos desenvolvedores optam por uma abordagem manual exportando planilhas Excel para um formato de texto Unicode e, em seguida, analisando os arquivos resultantes delimitados por tabulação. Embora isso funcione, não é o método mais eficiente. Você pode achar essa abordagem cansativa, especialmente se precisar repetir esse processo com frequência ou lidar com vários arquivos.

Felizmente, existem maneiras melhores de ler arquivos Excel programaticamente. Vamos aprofundar na solução!

A Solução: Usando OLE DB para Ler Arquivos Excel

Um dos métodos mais simples para ler arquivos Excel em C# é usando o provedor OLE DB (Object Linking and Embedding Database). Com OLE DB, você pode se conectar a arquivos Excel como se fossem bancos de dados e executar consultas SQL para recuperar os dados que você precisa. Veja como fazer isso passo a passo:

Etapa 1: Configurando Sua Conexão

Antes de ler os dados, você precisa configurar uma conexão com seu arquivo Excel. Aqui está um exemplo de como formatar sua string de conexão:

var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties='Excel 8.0;';", fileName);
  • fileName: Essa variável contém o caminho para o seu arquivo Excel.
  • connectionString: Esta é a conexão com o arquivo Excel que inclui as informações do provedor e da fonte de dados.

Etapa 2: Obtendo os Dados

Agora que você estabeleceu a conexão, pode recuperar dados de uma planilha específica usando um OleDbDataAdapter. Abaixo está o código para buscar todos os dados da planilha:

var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();

// Preencha o DataSet com os dados obtidos
adapter.Fill(ds, "anyNameHere");
DataTable data = ds.Tables["anyNameHere"];
  • Substitua workSheetNameHere pelo nome real da planilha da qual você deseja ler os dados.

Etapa 3: Usando LINQ para Manipulação de Dados

Uma vez que você tenha os dados em um DataTable, pode usar LINQ (Language Integrated Query) para manipular e consultar os dados facilmente. Se você quiser filtrar qualquer linha onde um campo específico esteja vazio, veja como você pode fazer isso:

var data = ds.Tables["anyNameHere"].AsEnumerable();

var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
    new MyContact
    {
        firstName = x.Field<string>("First Name"),
        lastName = x.Field<string>("Last Name"),
        phoneNumber = x.Field<string>("Phone Number"),
    });

Resumo dos Pontos Principais

Para resumir, ler arquivos Excel em C# usando um provedor OLE DB é simples e elimina a necessidade de manuseio manual de arquivos. Aqui estão os pontos-chave a lembrar:

  • Configure uma string de conexão apropriada usando o provedor OLE DB.
  • Obtenha dados do Excel usando o OleDbDataAdapter.
  • Aproveite o LINQ para filtrar e manipular os dados extraídos.

Ao seguir essas etapas, você pode criar uma integração sem costura para ler arquivos Excel diretamente em suas aplicações C#.

Conclusão

Ler arquivos Excel de forma eficiente em C# não precisa ser um problema. Com a abordagem que descrevemos, você pode automatizar o processo, economizar tempo e se concentrar no que realmente importa no desenvolvimento de sua aplicação.

Agora que você está equipado com o conhecimento para eliminar etapas manuais na leitura de arquivos Excel, vá em frente e experimente em seus projetos!