Ir para conteúdo

Arquivado

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

Fells

Botão excel que exporta asp

Recommended Posts

Olá amigos,

Poderiam me ajudar ou dar uma luz, parece besta e eu já procurei muito mais não achei nada que atendesse minha necessidade.

 

Tenho um relatório em asp que exibe 'n' informações da base na tela, basta apenas o usuário definir os filtros que ele deseja e a consulta retorna os dados.. Porém, todavia, entretanto.. a questão que não consigo resolver é colocar um simples botão que exporte para excel esse mesmo relatório que o usuário vê na tela.

 

Sei que há aquela funçãozinha.. e funciona bem:

Response.AddHeader "Content-disposition", "attachment; filename = report.xls"

Response.ContentType = "application/vnd.ms-excel"

 

Porem gostaria de ter um botão nessa página do relatório que chame essa função só quando o usuário clicar nele, tipo está lá o relatório na tela e no final tem um botão "Exportar relatório excel" por exemplo.

 

Obrigado desde já!

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites


<%

Response.ContentType = "application/vnd.ms-excel"

 

set objconn=server.createobject("adodb.connection")

 

connpath= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:banco.mdb"

objconn.Open connpath

 

set objrs=objconn.execute("select * from produtos where id < 20 ")

 

%>

<TABLE BORDER=1>

<TR>

<%

'Percorre cada campo e imprime o nome dos campos da tabela

For i = 0 to objrs.fields.count - 1

%>

<TD><% = objrs(i).name %></TD>

<% next %>

</TR>

<%

 

'Percorre cada linha e exibe cada campo da tabela

 

while not objrs.eof

%>

<TR>

<% For i = 0 to objrs.fields.count - 1

%>

<TD VALIGN=TOP><% = objrs(i) %></TD>

<% Next %>

</TR>

<%

objrs.MoveNext

 

wend

 

objrs.Close

objconn.close

%>

</TABLE>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então Xanburzum,

Eu dei uma olhada em algo muito parecido com isso que me mandou, inclusive acho que foi aqui no fórum.

 

Mais eu tenho toda a estrutura montada do relatório já..

O que preciso é de algo como um <input type="button" value="Exportar Exce" ... > no final do relatório.

Porque o usuário já vê esse relatório na tela.. mais ocasionalmente precisa exportá-lo para excel e seria interessante ter um botão para isso.

 

 

valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

apenas crie um botão e nele jogue esse code que manda direto no excel, você ainda pode apenas vincular um link para esse application/vnd.ms-excel, ele abrirá uma caixa de diálogo solicitando se quer abrir ou fazer o download. Tem outros códigos que postei dá uma olhada.

 

um botão ou link para uma página com esse código.

 

 

<%

Response.ContentType="application/vnd.ms-excel"
response.AddHeader "content-disposition", "inline; filename=arquivo.xls"
%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cria um botão para chamar outra pagina pegando os dados tipo assim.

 

excel.asp

 

 

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
</head>
 
<body>
 
 
<%
function mask_data( obj )
obj = CDAte( obj )
dia = Day( obj  )
mes = Month( obj )
ano = Year( obj )
 
if dia < 10 then
dia = "0" & dia
end if
 
if mes < 10 then
mes = "0" & mes
end if
 
mask_data = ano &"-"& mes &"-"& dia &" "&time
end function
 
 
response.Write(replace(replace(replace(mask_data(Date),"-","")," ",""),":",""))
 
 
Response.ContentType = "application/vnd.ms-excel"
Response.AddHeader "Content-Disposition", "attachment;filename="&replace(replace(replace(mask_data(Date),"-","")," ",""),":","")&".xls"
 
dim conn
'Criamos o objeto de conexão
Set conn = Server.CreateObject("ADODB.Connection") 
 
'Abrimos uma conexão com o banco de dados - [IMPORTANTE] altere os dados abaixo com as informações de sua base de dados
conn.Open("DRIVER={MySQL ODBC 5.1 Driver};SERVER=host;PORT=3306;DATABASE=database;USER=user;PASSWORD=pass;OPTION=3;")
'arquivo que checa se existe o login e a senha do usuario que esta tentando logar
 
set rs = conn.execute("select notafiscal as NF, REPLACE(REPLACE(CONCAT('R$ ', FORMAT(valor, 2)),',',''),'.',',') as VALOR, REPLACE(REPLACE(CONCAT('R$ ', FORMAT(valoricms, 2)),',',''),'.',',') as VALOR_ICMS, dataemissao as DATA_EMISSAO, cnpj as CNPJ from arquivo where rede='"&request.QueryString("rede")&"' and loja='"&request.QueryString("loja")&"' and dataemissao>='"&request.QueryString("data1")&"' and dataemissao<='"&request.QueryString("data2")&"'")
 
'set rs = conn.execute("select * from produtos where id < 20 ")
 
%>
<TABLE BORDER=1>
<TR>
<%
'Percorre cada campo e imprime o nome dos campos da tabela
For i = 0 to rs.fields.count - 1
%>
<TD><% = rs(i).name %></TD>
<% next %>
</TR>
<%
'Percorre cada linha e exibe cada campo da tabela
while not rs.eof
%>
<TR>
<% For i = 0 to rs.fields.count - 1
%>
<TD VALIGN=TOP style="mso-number-format:'\@'"><% = rs(i) %></TD>
<% Next %>
</TR>
<%
rs.MoveNext
wend
rs.Close
%>
<%
conn.close
%>
</TABLE>
</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

botão ou link para seu code

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala Xanburzum, Gilberto Jr, obrigado a todos pela ajuda.

 

Graças a vcs consegui chegar a uma solução para minha necessidade.. e irei postá-la pois acho fundamental o compartilhamento.

 

Seguinte...

Tenho minha pagina asp q chamaremos de minha_pagina.asp

 

Fiz uma função em javascript que vai chamar a mesma página que eu estou (minha_pagina.asp)

 

<script> type="text/javascript">

function Gerar_excel(var_excel){

window.open("minha_pagina.asp?var_excel="+var_excel)

}

 

 

Fiz também um request para recuperar o valor enviado pela função que passarei no botão via id

 

var_excel = trim(request("var_excel"))

 

 

Feito isso, no começo da página antes do meu código coloquei um IF para verificar se o valor enviado por parâmetro será igual a 1, se for ele irá abrir a opção de exportar para o excel, se for diferente ele simplesmente vai ignorar a rotina.

 

IF var_excel = 1 THEN

Response.AddHeader "Content-disposition", "attachment; filename=nome arquivo.xls"

Response.ContentType = "application/vnd.ms-excel"

 

 

 

'-- meu código com querys, tables, td's, e tr's da vida

 

 

E por fim criei um botão que será exibido abaixo de todas as informações do relatório, no final do código

 

<input type="button" id="1" value="Gerar Excel" OnClick="Gerar_excel(id)">

 

 

Resumindo, no browser ele vai mostrar o relatório com as 'n' colunas e 'n' linhas do meu relatório normalmente e abaixo delas agora haverá um botão com o nome Gerar Excel. Se o usuário clicar no botão ele vai chamar a função javascript passando o id do botão =1, a função vai mandar o valor por parâmetro para a própria página, ou seja vai recarrega-lá já que definimos isso no window.open. Com o request eu vou recuperar o valor do id e armazená-lo em uma variável que chamei de var_excel para que no IF subsequente ele verifique se este valor é igual a 1. Como isto é verdade ele rodará a rotina que manda o resultado do relatório que esta sendo exibido na página para excel.

 

Bom, acho que é isso. Talvez não seja a melhor solução mais me ajudou rsrs

Vlw pessoal

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola.

 

Isso ai, outras pessoas pode precisar de uma ajuda quanto a isso e procurando pela internet vai achar o código e pode ajudar o mesmo.

 

Att;

Compartilhar este post


Link para o post
Compartilhar em outros sites

1525357_666963106680822_110444823_n.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera pensei aqui existe como criar em javascript uma função que chame uma varial asp?
tenho uma consulta na tela e queria criar um botao que exportasse essa mesma consulta sem precisar sair da pagina.


algo assim mais ou menos

<script> type="text/javascript">

function Gerar_excel(var_excel){
......
</script>

esse script chamarias esta função
<%

Response.ContentType="application/vnd.ms-excel"
response.AddHeader "content-disposition", "inline; filename=Atualizar.xls"
vSql = "SELECT * FROM TAB_ATUALIZAR_BRASFELS ORDER BY Data,CODIGO ASC"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
%>
e criaria um botao que ao clicar executasse esta função

<input type="button" id="1" value="Gerar Excel" OnClick="Gerar_excel(id)">

Compartilhar este post


Link para o post
Compartilhar em outros sites

vc pode usar o Server.Transfer no ASP mesmo

Compartilhar este post


Link para o post
Compartilhar em outros sites

você pode usar o Server.Transfer no ASP mesmo

xamburzum ajuda ae, pq nao consigo exibir a variavel dia?

 

VAR_STATUS=("DEV")
vSql = "SELECT * FROM TAB_QUADRO_BRASFELS WHERE STATUS='"&vAR_STATUS&"' ORDER BY CT,CODIGO ASC"
Set myRst = Server.CreateObject("ADODB.Recordset")
myRst.Open vSql, conn, 3, 3
Response.ContentType="application/vnd.ms-excel"
response.AddHeader "content-disposition", "inline; filename=Devolução.xls"
VAR_Dia=DATE()
VAR_QT=("1")
VAR_UND=("UND")
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Devolucao Brasfels</title>
<style type="text/css">
.Calibri {
font-family: Calibri;
}
</style>
</head>
<body>
<table width="80%" border="1" ALIGN="CENTER" VALIGN="MIDDLE" Class="Calibri" >
<tr ALIGN="CENTER" VALIGN="MIDDLE">
<td rowspan="2">Logo</td>
<td colspan="4"><b>AUTORIZAÇÃO PARA EMISSÃO DE NOTA FISCAL</b></td>
<td><b>AENF</b></TD>
</tr>
<tr>
<td colspan="4"><b>CONTRATO : CL069/08</b></td>
<td ALIGN="CENTER" VALIGN="MIDDLE"><b>DATA</b></td>
<td colspan="2" ALIGN="CENTER" VALIGN="MIDDLE"><%var_dia%></td>
</tr>
Se eu colocar para exibir essa variavel nao exporta! e outra duvida pq qnd exporto as linhas referente a consulta estao vindo ocultas preciso ja no excel selecionar e reexibir.

consegui achar o problema da data estava faltando o igual!

<%=var_data%> o correto mas continuo coma duvida pq qnd exporto as linhas referente a consulta do meu banco aparecem ocultas na planilha?? preciso selecionar e re-exibir para aparecer?

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.