Ir para conteúdo

POWERED BY:

Arquivado

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

andresouza_br

Geração de planilhas em excel a partir de um banco

Recommended Posts

E ai galera...será que alguem poderia me dar uma força nisso aqui ?Estou gerando uma planilha em excel a partir de uma base de dados no Sql Server.O Código está funcionando normalmente. O Problema é que quando ele abre o excel, as celulas estão no formato "Geral", e eu gostaria que ficasse no formato "Texto".Pois quando há na tabela dados como "002256" ele coloca no excel como "2256".Não sei se há alguma propriedade co ContentType que me ajude nisso.Segue o código pra vcs darem uma olhadinha....

<% Response.ContentType = "application/vnd.ms-excel" %><!--#include file="conexao_siga.asp"--><!--#include file="conexao.asp"--><%dtInicial = Request.Form("dtInicial")dtFinal = Request.Form("dtFinal")%><%Set RS2 = Server.CreateObject("ADODB.RecordSet")Sql = "SELECT CAST(A1_COD AS CHAR(6)), A1_NOME, A1_PESSOA, A1_DTBASE CADASTRO_EM, A1_COMUNIC TIPO_COMUNICACAO, ISNULL(UL_DESC, '') DESCRICAO_COM "&_	  "FROM SA1010 A1 " &_	  "LEFT JOIN SUL010 UL " &_  	  "ON " &_          "UL.UL_FILIAL = '' " &_	  "AND UL.UL_TPCOMUN = A1_COMUNIC " &_	  "AND UL.D_E_L_E_T_ = '' " &_	  "WHERE " &_	  "A1.A1_FILIAL = '' " &_	  "AND A1.A1_DTBASE BETWEEN  '"& dtInicial &"' AND '"& dtFinal &"' " &_	  "AND A1.D_E_L_E_T_ = '' " 	  	  '=====================================================================================================================Set RS2 = oConn.Execute(SQL)%><table border = '1'>			<tr>		<%		'Percorre os campoe e imprime o nome dos campos na tabela		For i = 0 to RS2.Fields.count - 1		%>		<td> <%= RS2(i).name %> </td>		<% Next %>	</tr>	<%	'Percorre os dados da tabela	While not RS2.EOF	%>	<tr>		<% For i = 0 to RS2.Fields.Count - 1 %>		<td valign = 'top'> <%=  RS2(i) %>  </td>		<% Next %>	</tr>	<% 	RS2.MoveNext 	Wend	RS2.Close	oConn.Close	%>		</table> 

Valeu Pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara formatar estas celulas do excel é meio complicado ne

 

você tentou formatar seus dados pelos asp exemplo:

 

Response.write(CInt(RS2(i)))

 

Usando o CInt acho que podera dar uma ajuda pra você http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Kaplan, já tentei sim. Se for para exibir no browse funciona sim. Por exemplo um numero que na tabela está 000007 no browse sai como 000007.So que se dou um "Salvar Como" xls e abro o excel, vem apenas "7".Será que é melhor eu tentar exportar para CSV ou txt para depois importar para o Excel?

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum amigo faz um teste entao em txt mais acho q naum vai rolar direitoexcel é mto chatoso uma pergunta qual é o tipo do campo deste 000007, é varchar, char, numerico??

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então cara, eu to pensando em fazer em txt e colocar instruções na página de como o usuário pode importar o .txt para o excel (pois são usuários que trabalham em outras area e sabem por exemplo).O campo é do tipo varchar...e na consulta no proprio SQL server aparece com os 0's à esquerda.Normalmente faço isso, copio o resultado e colo no excel ja com as celular formatadas do tipo texto. Estou tentando fazer dessa forma para automatizer o processo.Do jeito que fiz no codigo esta 10, mas sem essa formatação vou ter que buscar outra forma.....consigo fazer com txt com o codigo semelhante ao acima?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O campo é do tipo varchar...e na consulta no proprio SQL server aparece com os 0's à esquerda.Se o tipo de campo é varchar o CINT acho que não vai rolar mesmo ou seja naum tem diferença se você usar ele ou naumso por testes mesmo mude o tipo do seu bd para numeric e use o CINT e ve o q viraqq coisa use mesmo o txt

Compartilhar este post


Link para o post
Compartilhar em outros sites

é cara..to enchendo o saco ne...rs..mais problemas..resolvi fazer por txt mesmo.....so que nao to conseguindo escrever no arquivo...to usando o seguinte codigo

For i = 0 to RS2.Fields.count - 1		 srtLine = strLine & RS2(i).name & chr(9)	 	       Next	MyFile.WriteLine srtLine

so que nao ta gravando....so ta gravando o ultimo campo...mas se eu coloco a linha"MyFile.WriteLine srtLine" dentro do "For" ele grava todos os campos...so que um embaixo do outro...sabe me dizer o q pode ser?

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.