Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

[ GuTo ]

Pegar dados de planilhas EXCEL *.XLS

Recommended Posts

Fala pessoal,

 

Todo mundo sabe que só deixar funcionando não basta, a gente precisa saber o porque daquilo estar funcionando e entender como funciona.

 

Vejam este código, principalmente a parte entre duas linhas de ###..., que são as SQL'S, um tanto quanto incomuns para muitos (para eu, por exemplo!)

 

<%Option Explicitdim conn, rs, i, SQL(1)'Cria e abre a conexão com a base de dados (database)Set conn = Server.CreateObject("ADODB.Connection") conn.Open "DRIVER=Microsoft Excel Driver (*.xls); ReadOnly=1; DBQ=" & Server.MapPath("testefev_perfis_horacius_REMOVER.xls") '####################################################'---------------- ATENCAO NAS SQL'S ----------------'----------------- SQL POSSÍVEIS -----------------'SQL(0) = "Select * From [Plan2$]"SQL(1) = "[A:IV]"'####################################################i = 0'O numero correspondente a SQL que você quer que seja executadaSet rs = conn.Execute(SQL(i))'...Aqui ela é executada ....%><html><body><h2><%=SQL(i)%></h2><!-- ... Aqui eu mostro qual foi executada ... --><table>	<thead>		<tr><%							   'Agora a variável "i" toma outro rumo...		for i = 0 to rs.fields.count-1%> 			<th><% = rs.fields(i).name %></th><%		next%> 		</tr>	</thead>	<tbody><%		while not rs.eof %> 		<tr><%			for i = 0 to rs.fields.count-1 %> 			<td><%=rs.fields(i).value%></td><%			next %> 		</tr><%		rs.movenext		wend%> </table></body></html>
O caso é, você conhecem planilhas do Excel?

Geralmente estes arquivos tem mais de um plano, que pode ser visto no canto inferior esquerdo em algumas abas. (Plan1,Plan2,Plan2[,PlanN[,...]])

 

Na primeira SQL (SQL(0)), tenho a SQL que seleciona pelo Plan2 da planilha (o "[...]" e "$" são obrigatórios para funcionar, vide link de referência ).

Nesta, a primeira linha é considerado como cabeçalho e é exibida ali dentro da THEAD. O restante dentro da TBODY.

 

Na segunda SQL (SQL(1)), tenho uma string SQL que até então eu pensava saber o que ela fazia, mas não sei. Então, é isso que gostaria de saber.

Nesta, a segunda linha é considerada como cabeçalho (?) e apartir da terceira são exibidos dentro da TBODY.

 

O que faz esta SQL?

"[A:IV]"

Eu pensava que ela pegava os campos da Coluna A até a 4ª coluna posterior a ela (IV), no caso pensei então que ia de A-E (a, B, C, D, E). Mas não é isso!

 

Alguém sabe?

 

Valeeeu!

 

Espero ter sido claro.

 

Obs.: Queria poder anexar minha planilha, pra vocês testarem e ver como funciona. Tem como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara....trabalhar com excel e asp é complicado, tem pouca coisa na internet....eu não vejo utilidade nenhuma pra essa linha, se retirar o código dá pau?eu fiz um esquema usando excel e asp porém fiz o sql diferentese não tiver onde upar os arquivos pode enviar pro meu email que eu coloco um link pra galera baixar e ver o codigo (cardozo81@gmail.com)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Essa linha funciona como um select. Mas não entendi como funciona.

 

Fiz um teste aqui e coloquei [A:I],[b:I] .... Meu arquivo tinha 685 registros... exibiu 335262 registros. E depois disso meu pc ficou muito lento ... hehe tive que reiniciar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Depois de mais alguns testes, acho que entendi.

 

O A significa a coluna. O IV significa onde termina. O certo seria colocar A10, A20... que estaria dizendo que seria exibido so até o A10 ou A20 no caso. Como colocou IV (poderia ser B1, B10), exibe todos os dados da coluna A.

Para escolher outros planos, você deve colocar assim: [Plan2$A:IV].

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hargon,Outros planos eu faria algo como: [Plan1$] ou [Plan3$], não é?!Não entendi este seu. Seria um "mix" das duas "SQL'S" que mostrei?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Pelo que entendi as duas SQL são um SELECT. Seria o mesmo que você criar duas consultas em variáveis diferentes.

Você pode ver que um pouco mais abaixo você escolhe qual SQL deseja executar, setando um valor para i. Elas não estão sendo executadas ao mesmo tempo.

 

Para navegar entre os planos eu não fiz o teste igual você citou, talvez funcione também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nãooooo cara,Seguinte, este código aí fui EU que montei, tudo funciona, mas as SQL's se comportam de maneira distintas.E o SQL(0) vem bem certinho, com cabeçalho certo e tudo mais.Já a segunda, só vem os dados mesmo, sem o cabeçalho. E como o primeiro registro é CONSIDERADO cabeçalho (daí fazendo o uso desse meu script você verifica isso) só vai ser mostrado os dados apartir do 2º registro.No primeiro sql (SQL(0)) SIM suporta eu fazer o Recordset, tanto pelo nome ou pelo ordinal. ( oRS("NomeDoCampo") )Já no segundo sql (SQL(1)) NAO suporta eu fazer no RecordSet: oRS("NomeDoCampo"), somente oRS(0)... pelo ordinal, nao pelo name.É isso!E no primeiro sql eu selecione de que plano quero pegar....Mas acho ruim isso, pois queria pegar sempre do plano ativo, ou seja, você abre o xls normalmente e o plano que aparecer pra ti, seria este que gostaria de pegar. Não especificamente o plan2 ou outro. Apenas o ativo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.