Pegar todas as linhas preenchidas numa planilha
olá Pessoal!
Gostaria de saber como faz um loop para pegar todas as linhas preenchidas de uma respectiva coluna de uma planilha em excel e armazenar numa listbox. Exemplo:
A
João
Pedro
Maria
Quero percorrer toda a coluna A para pegar os nomes.
Alguma sugestão?
Obrigado
Ediberto
Gostaria de saber como faz um loop para pegar todas as linhas preenchidas de uma respectiva coluna de uma planilha em excel e armazenar numa listbox. Exemplo:
A
João
Pedro
Maria
Quero percorrer toda a coluna A para pegar os nomes.
Alguma sugestão?
Obrigado
Ediberto
Edibertoalves
Curtidas 0
Respostas
Ricardo Silva
07/10/2008
cara é soh fazer uma conexão OBDC no arquivo .xml
e jogar na memoria... num DataReader, DataTable ou ateh mesmo num objeto seu....
explica melhor ai...
e jogar na memoria... num DataReader, DataTable ou ateh mesmo num objeto seu....
explica melhor ai...
GOSTEI 0
Codename.v
07/10/2008
É isso mesmo. Como o amigo RicaJedidia disse na resposta acima, você vai precisar estabelecer uma conexão ODBC com sua base de dados Excel.
Segue um código simples e comentado de como fazer isso.
É isso... Você pode modificar este código e coloca-lo em classes diferentes para torná-lo reutilizável, ou pode escrever ele no evento Load do seu Formulário.
Obs.: Não se esqueça de declarar o ´using System.Data.Odbc´ no começo do seu código.
Abraços!
Segue um código simples e comentado de como fazer isso.
/* String que guarda as informações da conexão. O campo dbq representa o arquivo do Excel a ser utilizado, o campo defaultdir representa o diretório em que encontra-se o arquivo, etc... =P */ String connectionString = @"Dsn=Excel Files;" + "dbq=Pasta1.xlsx;" + "defaultdir=c:\\;" + "driverid=1046;" + "maxbuffersize=2048;" + "pagetimeout=5"; /* Aqui você estancia um objeto da classe OdbcConnection passando a string de conexão como parâmetroe em seguida utiliza o método Open() da mesma classe para abrir a conexão ODBC. */ OdbcConnection odbcConnection = new OdbcConnection(connectionString); odbcConnection.Open(); /* É criado e estanciado agora um objeto da classe OdbcDataAdapter passando como parâmetros um comando SQL e o objeto da classe OdbcConnection que ja encontra-se aberto. Obs.: [Plan1$] diz respeito à planilha do seu arquivo. */ OdbcDataAdapter odbcDataAdapter = new OdbcDataAdapter("select * from [Plan1$]", odbcConnection); /* Cria-se agora um DataSet e utiliza-se o objeto da classe OdbcDataAdapter para preenche-lo com todo o conteúdo do arquivo. Em seguida o método Close() da classe OdbcConnection é chamado para fechar a conexão. */ DataSet ds = new DataSet(); odbcDataAdapter.Fill(ds); odbcConnection.Close(); /* Aqui temos um loop foreach simples que utiliza os dados do DataSet para preencher um controle ListBox. */ foreach (DataRow dataRow in ds.Tables[0].Rows) { listBox1.Items.Add(dataRow["A"].ToString()); }
É isso... Você pode modificar este código e coloca-lo em classes diferentes para torná-lo reutilizável, ou pode escrever ele no evento Load do seu Formulário.
Obs.: Não se esqueça de declarar o ´using System.Data.Odbc´ no começo do seu código.
Abraços!
GOSTEI 0
Edibertoalves
07/10/2008
Olá!
Muito legal o seu código!!!
Implementei e funcionou legal!
Agora uma outra dúvida....
Como faria para pegar somente o cabeçalho???.
Por exemplo:
A
Codigo <= Este é o cabeçalho
01
02
03
Aí no listbox ou em um treeview eu exibiria assim:
Codigo
01
02
03
Obrigado!
Ediberto
Muito legal o seu código!!!
Implementei e funcionou legal!
Agora uma outra dúvida....
Como faria para pegar somente o cabeçalho???.
Por exemplo:
A
Codigo <= Este é o cabeçalho
01
02
03
Aí no listbox ou em um treeview eu exibiria assim:
Codigo
01
02
03
Obrigado!
Ediberto
GOSTEI 0
Edibertoalves
07/10/2008
Consegui de uma forma, resgatar somente o cabeçalho, e adaptando um pouco sua lógica:
a função CapturarNomePlanilha serve justamente para pegar o nome da primeira planilha com o qual deseja trabalhar.
Obrigado
Ediberto
ArrayList vListaCabecalho = new ArrayList(); string vConnString = @"Dsn=Excel Files;dbq="+txtArquivo.Text+";driverid=1046;maxbuffersize=2048;pagetimeout=5;"; System.Data.Odbc.OdbcConnection vConnection = new System.Data.Odbc.OdbcConnection(vConnString); vConnection.Open(); System.Data.Odbc.OdbcDataAdapter vDataAdapter = new System.Data.Odbc.OdbcDataAdapter("select * from [" + CapturarNomePlanilha() + "]", vConnection); System.Data.DataTable vDataTable = new System.Data.DataTable(); vDataAdapter.Fill(vDataTable); vConnection.Close(); vConnection.Dispose(); for (int i = 0; i <= vDataTable.Columns.Count -1; i++) { vListaCabecalho.Add(vDataTable.Columns[i].ToString()); }
a função CapturarNomePlanilha serve justamente para pegar o nome da primeira planilha com o qual deseja trabalhar.
Obrigado
Ediberto
GOSTEI 0