Fórum Pegar todas as linhas preenchidas numa planilha #21080
07/10/2008
0
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
Curtir tópico
+ 0Posts
07/10/2008
Ricardo Silva
e jogar na memoria... num DataReader, DataTable ou ateh mesmo num objeto seu....
explica melhor ai...
Gostei + 0
08/10/2008
Codename.v
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
09/10/2008
Edibertoalves
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
09/10/2008
Edibertoalves
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
Clique aqui para fazer login e interagir na Comunidade :)