Publicidade

Lendo uma Planilha do Excel com C#

8/31/2012 12:51:00 PM Rafael Rodrigues 4 Comments

Há um tempo atrás escrevi um post sobre como fazer uma leitura de arquivo Word utilizando o C#. Achei que para fosse fazer a mesma coisa para o Excel, mas diferentemente, vou fazer uma conexão para acessar o Excel. Isso mesmo! Como se fosse um banco de dados. 

Para fazer fazer essa conexão no .NET, vamos executar o comando Ado.Net, que vai fazer um select na planilha Excel.

Para começar, vamos mostrar como está a nossa planilha no Excel, que peguei de um exemplo de outro colega, e vamos ver quais as informações importantes para o nosso programa em .Net. 

Conteúdo da planilha:


Vejam que a planilha tem os títulos das colunas na primeira linha. Estes serão os nomes dos campos para o nosso comando Select, e também o nome da planilha, que é Sheet1, será o nome da nossa tabela.

Agora crie um projeto, pode ser WindowsForm mesmo e crie a classe de conexão com a planilha, usando OleDB:

OleDbConnection conexao = new OleDbConnection(@”Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\temp\planilha.xlsx;Extended Properties=’Excel 12.0 Xml;HDR=YES’;”);

      Nesta conexão, usamos o provider Microsoft.ACE.OLEDB e indicamos o nome da planilha, bem como a versão do Excel.
      Criaremos agora um Adapter para executar o comando Select, e também um DataSet para armazenar os dados da consulta:

OleDbDataAdapter adapter = new OleDbDataAdapter(“select * from [Sheet1$]“, conexao);
DataSet ds = new DataSet();

      Observem que o nome da planilha tem um símbolo ‘$’ ao final e está entre colchetes ‘[]’.

      Agora vamos abrir a conexão, preencher o DataSet e exibir os dados da planilha. Para mostrar os dados você pode criar um grid.

try
{
   conexao.Open();
   adapter.Fill(ds);

   grid.DataSource = ds;
}
catch (Exception ex)
{
   Console.WriteLine(“Erro ao acessar os dados: “ + ex.Message);
}
finally
{
   conexao.Close();

}

     Vale a pena ressaltar que para montar a sua conexão, vai depender da versão do Excel e da extensão. Para mais informações entre nesse site:  http://www.connectionstrings.com/excel-2007

É isso! Simples assim! Abraços!


4 comentários:

  1. Oii, muito legal o post! PARABÉNS!
    Só para adicionar uma informação que descobri ao utilizar esse código, esse parte do "[Sheet1$]" deve ser substituído por "[Plan1$]" caso não funcione.
    No meu caso funcionou, acho que pelo VS ou Office ou Windows estar em português.
    Valeu.

    ResponderExcluir
  2. parabens, forma simples e didatica

    ResponderExcluir
  3. Rafael, Boa tarde. Muito bom seu posto.
    Mas estou com uma duvida: Quero ler os dados da planilha a passar as informações para uma automação que estou desenvolvendo, como fazer?

    ResponderExcluir