Foros del Web » Programando para Internet » ASP Clásico »

Problema al Generar Archivo excel desde ASP

Estas en el tema de Problema al Generar Archivo excel desde ASP en el foro de ASP Clásico en Foros del Web. Buen día, mi problema es el siguiente: Tengo una página ASP que llama y manda parámetros a otra, la cual genera un documento Excel; En ...
  #1 (permalink)  
Antiguo 18/10/2010, 15:13
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Problema al Generar Archivo excel desde ASP

Buen día, mi problema es el siguiente:

Tengo una página ASP que llama y manda parámetros a otra, la cual genera un documento Excel;
En mi LocalHost trabaja a las mil maravillas, pero a la hora de probarlo en otro lado,
excel marca dos errores, que son los siguientes

1- No se puede Abrir url

2- No se puede obtener acceso al archivo url
*El Nombre del archivo o la ruta no existen
*Otro programa esta usando el archivo
*El libro que esta intentando guardar tiene el mismo nombre que otro libro que está abierto en estos momentos

Dejo el código de la página que recibe los parámetros y genera el excel
Código ASP:
Ver original
  1. <html>
  2.  
  3. <head>
  4. <%
  5.  
  6. Response.Buffer = TRUE
  7. Response.ContentType = "application/vnd.ms-excel"
  8.  
  9. %>
  10. <%
  11. Dim rs, obj, Territorio , Ciudad , FechaCredito , FechaPago, closePage
  12.     closePage = 0
  13.     Territorio = Request.QueryString("cboTerritorio")
  14.     Ciudad = Request.QueryString("cboCiudad")
  15.     FechaCredito =  Request.QueryString("txtFechaCredito")
  16.     FechaPago=  Request.QueryString("txtFechaPago")
  17.    
  18.    
  19.     Set rs=  CreateObject("ADODB.Recordset")
  20.     Set obj =  Server.CreateObject("Datos.clsLlena")
  21.     Set rs = obj.TraeDatos(cstr(Territorio),cstr(Ciudad),cstr(FechaCredito),cstr(FechaPago))
  22.    
  23.  
  24. %>
  25. <title>CLIENTES </title>
  26. </head>
  27.  
  28. <body>
  29. <table border="0" width="100%">
  30. <tr>
  31.  
  32. <td> <b>Clientes</b> </td>
  33. <td></td>
  34. <td></td>
  35. <td>
  36. <b><%= Date ()%></b>
  37.   </td>
  38. </tr>
  39. <tr>
  40. <td width="50%" align="center" style ="BORDER-BOTTOM: #000000  solid"><b>Empresa</b></td>
  41. <td width="50%" align="center" style ="BORDER-BOTTOM: #000000  solid"><b>Cuenta</b></td>
  42. <td width="50%" align="center" style ="BORDER-BOTTOM: #000000  solid"><b>Nombre</b></td>
  43.  
  44. <!--bgcolor="#C0C0C0"-->
  45. </tr>
  46. <% Session.Timeout = 180
  47.  
  48. %>
  49. <%While Not rs.EOF%>
  50. <tr>
  51. <%
  52.  
  53. Response.Write("<td width='50%' align='center'>" &rs.Fields("Empresa")& "</TD>")
  54. Response.Write("<td width='50%' align='center'>" &rs.Fields("Cuenta")& "</TD>")
  55. Response.Write("<td width='50%' align='center'>" &rs.Fields("Nombre")& "</TD>")
  56.  
  57.  
  58. rs.MoveNext
  59.  
  60. closePage = 1
  61.  WEND%>
  62. </tr>
  63. <%
  64. If closePage = 0 then
  65.     Response.ContentType = "text/html"
  66.     Response.Clear
  67.     Response.Write("<script> window.moveTo(1000,1000);</script>")
  68.     Response.Write("<script> opener=null; alert('No hay registros.'); window.close();</script>")
  69.     Response.End
  70. end if
  71. call obj.CerrarCon
  72. %>
  73.  
  74.  
  75. </table>
  76.  
  77. </body>
  78.  
  79. </html>
De antemano agradezco su ayuda
  #2 (permalink)  
Antiguo 22/10/2010, 09:54
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Problema al Generar Archivo excel desde ASP

Sin mirar mucho el código y por los errores que recibís, podría tratarse de un tema de permisos.

En tu localhost seguramente el usario local tiene permisos para escribir y crear archivos en la carpeta donde intentas guardar, ahora que en el otro sitio donde estás probando puede que no existan esos permisos.

Verifica que la carpeta donde generas los archivos tenga permiso de escritura el IUSR que es el usuario de internet.

El otro error tiene que ver tal vez con intentar crear el archivo siempre con el mismo nombre. Fijate si te sirve ponerle un nombre dinámico, sea numerado o codificado como quieras, para no pisar siempre uno sobre otro.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #3 (permalink)  
Antiguo 27/10/2010, 14:47
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

Buen día, ya "solucioné" eso, ahora me marca otro error
el cual dice que

Internet explorer no puede bajar la url del servidor

intenté lo dicho en un post hecho en este foro (Fue el que me empezó a mandar este nuevo error)


y también lo dicho en esta otra página

http://blogs.msdn.com/b/ieinternals/archive/2009/10/02/internet-explorer-cannot-download-over-https-when-no-cache.aspx?CommentPosted=true#commentmessage


cabe destacar que no tenía ningún tipo de control de cache y la página a la que acceso tampoco es HTTPS

¿Podrías darme algún consejo respecto a esto por favor verinchi?

esta es la parte que modifiqué
Código vb:
Ver original
  1. Response.Buffer = TRUE
  2. Response.Clear()
  3. Response.ContentType = "application/vnd.ms-excel"
  4. Response.AddHeader "Cache-Control: private, max-age=15","attachment; filename=Reporte_Detallado.xls"

Gracias por adelantado

Última edición por jogpe; 27/10/2010 a las 14:55
  #4 (permalink)  
Antiguo 28/10/2010, 08:49
Avatar de verinchi  
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires
Mensajes: 647
Antigüedad: 19 años, 7 meses
Puntos: 2
Respuesta: Problema al Generar Archivo excel desde ASP

Cita:
Iniciado por jogpe Ver Mensaje
Buen día, ya "solucioné" eso, ahora me marca otro error
el cual dice que

Internet explorer no puede bajar la url del servidor

intenté lo dicho en un post hecho en este foro (Fue el que me empezó a mandar este nuevo error)


y también lo dicho en esta otra página

http://blogs.msdn.com/b/ieinternals/...commentmessage


cabe destacar que no tenía ningún tipo de control de cache y la página a la que acceso tampoco es HTTPS

¿Podrías darme algún consejo respecto a esto por favor verinchi?

esta es la parte que modifiqué
Código vb:
Ver original
  1. Response.Buffer = TRUE
  2. Response.Clear()
  3. Response.ContentType = "application/vnd.ms-excel"
  4. Response.AddHeader "Cache-Control: private, max-age=15","attachment; filename=Reporte_Detallado.xls"

Gracias por adelantado

Hola
Lo que yo te recomendaría es que el nombre del archivo (filename) lo generes de forma dinámica. Esto para evitarte que el server no quiera generarlo porque ya existe otro con ese nombre.

Teniendo en cuenta que en tu server funcionaba bien. Estas completamente seguro de tener instalado excel en el server donde lo estas corriendo y falla?

Generalmente, cuando en un equipo funciona y en otro no, es un tema de configuraciones en el server, IIS, permisos de usuario, etc.

El código se ve bien, y no hay razones, más que el nombre del archivo que podría hacerte conflicto, para pensar que pudiera fallar.

Saludos y cualquier cosa sigo por acá.
__________________
Why can't we not be sober?
www.partitorium.com.ar
  #5 (permalink)  
Antiguo 28/10/2010, 11:52
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

Que tal;

Lo del nombre no es problema, puesto que se genera dinámicamente (sinceramente no sé como lo hace, pero lo hace jeje), cada vez que genero un documento excel en mi local, se genera de la siguiente forma Nombre[Consecutivo].

Lo del server... no lo sé, tendría que preguntarle a la gente de QA; voy a checar eso y posteo para comentar como me fue

Gracias por tu atención
  #6 (permalink)  
Antiguo 01/11/2010, 18:08
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

Cita:
Iniciado por verinchi Ver Mensaje
Generalmente, cuando en un equipo funciona y en otro no, es un tema de configuraciones en el server, IIS, permisos de usuario, etc.
Solo una duda, que podria configurarse en IIS para que pudiera funcionar?
Que tipo de permisos de usuario?

Es que estoy perdido con eso, y al parecer la gente de QA tambien

Saludos y gracias por tu atencion
  #7 (permalink)  
Antiguo 12/11/2010, 09:34
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

Bueno señores, pues únicamente para comentar que ya se resolvió el problema de los permisos, ahora funciona perfectamente... cuando el recordset esta vacío; cuando este lleva alguna información, me sigue marcando el mismo problema, ya lo verifiqué con un web debugger y es por un header de no-cache, el detalle es que no he puesto ningún encabezado de ese tipo en mi código, bueno , puse uno, pero hasta donde entiendo, ese lo que evita (en teoría) es el no-cache, ¿alguien podría darme una pista?; les adjunto el nuevo código completo

Código ASP:
Ver original
  1. <%
  2.  
  3. Response.Buffer = TRUE
  4. Response.ContentType = "application/vnd.ms-excel"
  5. Response.AddHeader "Cache-Control", "private, max-age=15"
  6. Response.AddHeader "Content-Disposition", "attachment; filename=Reporte_Detallado.xls"
  7. %>
  8. <html>
  9. xmlns:v="urn:schemas-microsoft-com:vml"
  10. xmlns:o="urn:schemas-microsoft-com:office:office"
  11. xmlns:x="urn:schemas-microsoft-com:office:excel"
  12. xmlns="http://www.w3.org/TR/REC-html40">
  13.  
  14. <head>
  15. <meta http-equiv=Content-Type content="text/html; charset=windows-1252">
  16. <meta name=ProgId content=Excel.Sheet>
  17. <meta name=Generator content="Microsoft Excel 9">
  18.  
  19. <%
  20. Dim rs, obj, Territorio , Ciudad , FechaCredito , FechaPago, closePage
  21.     closePage = 0
  22.     Territorio = Request.QueryString("cboTerritorio")
  23.     Ciudad = Request.QueryString("cboCiudad")
  24.     FechaCredito =  Request.QueryString("txtFechaCredito")
  25.     FechaPago=  Request.QueryString("txtFechaPago")
  26.    
  27.    
  28.     Set rs=  CreateObject("ADODB.Recordset")
  29.     Set obj =  Server.CreateObject("Datos.clsLlena")
  30.     Set rs = obj.TraeDatos(cstr(Territorio),cstr(Ciudad),cstr(FechaCredito),cstr(FechaPago))
  31.    
  32.  
  33. %>
  34. <title>CLIENTES </title>
  35. </head>
  36.  
  37. <body>
  38. <table border="0" width="100%">
  39. <tr>
  40.  
  41. <td> <b>Clientes</b> </td>
  42. <td></td>
  43. <td></td>
  44. <td>
  45. <b><%= Date ()%></b>
  46.   </td>
  47. </tr>
  48. <tr>
  49. <td width="50%" align="center" style ="BORDER-BOTTOM: #000000  solid"><b>Empresa</b></td>
  50. <td width="50%" align="center" style ="BORDER-BOTTOM: #000000  solid"><b>Cuenta</b></td>
  51. <td width="50%" align="center" style ="BORDER-BOTTOM: #000000  solid"><b>Nombre</b></td>
  52.  
  53. <!--bgcolor="#C0C0C0"-->
  54. </tr>
  55. <% Session.Timeout = 180
  56.  
  57. %>
  58. <%While Not rs.EOF%>
  59. <tr>
  60. <%
  61.  
  62. Response.Write("<td width='50%' align='center'>" &rs.Fields("Empresa")& "</TD>")
  63. Response.Write("<td width='50%' align='center'>" &rs.Fields("Cuenta")& "</TD>")
  64. Response.Write("<td width='50%' align='center'>" &rs.Fields("Nombre")& "</TD>")
  65.  
  66.  
  67. rs.MoveNext
  68.  
  69. closePage = 1
  70.  WEND%>
  71. </tr>
  72. <%
  73. If closePage = 0 then
  74.     Response.ContentType = "text/html"
  75.     Response.Clear
  76.     Response.Write("<script> window.moveTo(1000,1000);</script>")
  77.     Response.Write("<script> opener=null; alert('No hay registros.'); window.close();</script>")
  78.     Response.End
  79. end if
  80. call obj.CerrarCon
  81. %>
  82.  
  83.  
  84. </table>
  85.  
  86. </body>
  87.  
  88. </html>

Gracias por sus comentarios
  #8 (permalink)  
Antiguo 18/11/2010, 11:36
 
Fecha de Ingreso: octubre-2010
Mensajes: 20
Antigüedad: 13 años, 6 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

Únicamente para comentar que ya quedó resuelto el problema, solo tuve que cambiar algunas cosas dentro del código de los headers
Gracias por su atención
  #9 (permalink)  
Antiguo 04/04/2011, 11:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 6
Antigüedad: 13 años, 7 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

Hola !!!

Yo estoy teniendo un problema parecido, y no consigo dar con la solución genereo el excel atraves de estas líneas:

Response.AppendHeader("Content-Type", "application/force-download;charset=latin");
Response.AppendHeader("Content-Disposition", "attachment; filename=cuestionario.xls");


En los navegadores de mozilla, google croome e internet explorer 9 fucniona correctamente;
pero en internet explorer 8 simplemente no me despliesga la ventana de abrir o guardar,.

Por lo que he leido internet explorer necesita el cache para poder realizar este tipo de acciones, por lo que en ningun momemto he añadido codigo para que me borre el cache.

Otra cosa que me parece extraño, es que en si lo ejecuto de manera local (localhost) con internet explorer 8 funciona correctamente pero si lo ejecuto atraves de internet no me funciona.

He probado añadiendo:

Response.buffer=true
Response.clear ();

Agradeceria mucho su ayuda.
  #10 (permalink)  
Antiguo 24/02/2012, 07:25
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

yo también tengo el mismo problema, solo que es cuando el archivo es muy grande, con mas de 3000 de filas en el host de cae, pero con 187 filas en el servidor web se cae, le agregue las lineas del cache y subió un poco pero nada mas.

en raras ocasiones en el servidor web he generado 15000 filas en un excel, pero después lo vuelvo a intentar y se cae
  #11 (permalink)  
Antiguo 24/02/2012, 08:18
Avatar de Joch_pa  
Fecha de Ingreso: octubre-2009
Ubicación: Pachuca De Soto, Hidalgo, Mexico, Mexico
Mensajes: 122
Antigüedad: 14 años, 6 meses
Puntos: 7
Respuesta: Problema al Generar Archivo excel desde ASP

ya intentaron con el response.flush???

hay que ponerlo dentro de cada ciclo, esto para que se vaya enviando la informacion al cliente.
  #12 (permalink)  
Antiguo 24/02/2012, 09:06
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

lo hice y el excel ya no se "cae" pero me imprime el error en el excel generado


<font face="Arial" size=2>
<p>Microsoft VBScript runtime </font> <font face="Arial" size=2>error '800a005e'</font>
<p>
<font face="Arial" size=2>Invalid use of Null: 'replace'</font>
<p>
<font face="Arial" size=2>/revision_polizas/Consulta/consultapendientesysiniestro/archivosiniestro.asp</font><font face="Arial" size=2>, line 58</font>

------------------------------------------------

adjunto el codigo

<!-- #include file="lib/conexion.asp" -->
<%Response.Expires=0
server.ScriptTimeout=57600

response.Clear()
Response.Expiresabsolute = Now() - 1
Response.AddHeader "pragma","no-cache"
Response.AddHeader "cache-control","private"
Response.CacheControl = "no-cache"
strLCID = 7177
session.LCID = strLCID

conectar

sql = request("consulta")
sql = replace(sql,"*","%")
'response.Write(sql)
'response.End()
ejec(sql)
Response.Buffer = true

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

Dim r, r_ini, oSS, oInformesSheet, oRange, c, numero_hojas, reg
dim nro_siniestro_corredora, rut, dv, nombre, apellidop, apellidom, fecha_siniestro, fec_ingreso, tipo_siniestro, seguro, estado, fecha_pago, total_pagado

set oSS = CreateObject("OWC10.Spreadsheet")
Set c = oSS.Constants

Dim sql
dim fec,pol,nom,dir,com

oSS.Worksheets(3).delete
oSS.Worksheets(2).delete

numero_hojas = 1

call generaEncabezado()

r_ini = r

if reg.eof = true then
Set oRange = oInformesSheet.Range("C3")
oRange.Value = Array("No Hay Datos Para Hoy")
call terminar()
else
reg.movefirst
do until reg.eof
nro_siniestro_corredora = reg(1)
rut = reg(2)
dv = reg(3)
nombre = replace(replace(replace(replace(replace(replace(re place(reg(4),chr(209),"N"),chr(241),"n"),"á","a"), "é","e"),"í","i"),"ó","o"),"ú","u")
apellidop = replace(replace(replace(replace(replace(replace(re place(reg(5),chr(209),"N"),chr(241),"n"),"á","a"), "é","e"),"í","i"),"ó","o"),"ú","u")
apellidom = replace(replace(replace(replace(replace(replace(re place(reg(6),chr(209),"N"),chr(241),"n"),"á","a"), "é","e"),"í","i"),"ó","o"),"ú","u")
fecha_siniestro = reg(8)
fec_ingreso = reg(16)
tipo_siniestro = replace(replace(replace(replace(replace(replace(re place(reg(0),chr(209),"N"),chr(241),"n"),"á","a"), "é","e"),"í","i"),"ó","o"),"ú","u")
seguro = replace(replace(replace(replace(replace(replace(re place(reg(15),chr(209),"N"),chr(241),"n"),"á","a") ,"é","e"),"í","i"),"ó","o"),"ú","u")
estado = replace(replace(replace(replace(replace(replace(re place(reg(27),chr(209),"N"),chr(241),"n"),"á","a") ,"é","e"),"í","i"),"ó","o"),"ú","u")
fecha_pago = reg(30)
total_pagado = reg(31)



Set oRange = oInformesSheet.Range("A" & r & ":M" & r)

oRange.Value = Array(nro_siniestro_corredora, rut, dv, nombre, apellidop, apellidom, fecha_siniestro, fec_ingreso, tipo_siniestro, seguro, estado, fecha_pago, total_pagado)

oRange.Font.Size = 8
With oRange.Borders(7)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(8)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(9)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(10)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(11)
.LineStyle = 1
.Weight = 2
End With
r = r + 1
response.Flush()
response.Clear()
reg.MoveNext
loop
end if
reg.Close

call terminar()

sub GeneraEncabezado()
r=1
Set oInformesSheet = oSS.Worksheets(numero_hojas)
oInformesSheet.Name = "hoja 1"
Set oRange = oInformesSheet.Range("A1:M1")
oRange.Value = Array("Numero Siniestro Corredora","RUT","DV","Nombre Cliente", "Apellido Paterno","Apellido Materno","Fecha Siniestro","Fecha Ingreso Corredora","Tipo Siniestro","Seguro","Estado","Fecha de Pago","Total Pagado")


With oRange.Borders(7)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(8)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(9)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(10)
.LineStyle = 1
.Weight = 2
End With
With oRange.Borders(11)
.LineStyle = 1
.Weight = 2
End With
oRange.Font.Bold = True
oRange.Interior.Color = "Silver"
oRange.HorizontalAlignment = c.xlHAlignCenter
call FormateaColumnas()
r = 2
end sub

sub FormateaColumnas()
oInformesSheet.Range("A:A").ColumnWidth = 11
oInformesSheet.Range("B:B").ColumnWidth = 35
oInformesSheet.Range("C:C").ColumnWidth = 10
oInformesSheet.Range("D:D").ColumnWidth = 15

'oInformesSheet.Range("C:C").NumberFormat = "0"
oInformesSheet.Range("E:E").ColumnWidth = 15
'oInformesSheet.Range("E:E").NumberFormat ="d-m-yyyy"
oInformesSheet.Range("F:F").ColumnWidth = 18
oInformesSheet.Range("G:G").ColumnWidth = 20
oInformesSheet.Range("G:G").NumberFormat ="d-m-yyyy"
oInformesSheet.Range("H:H").ColumnWidth = 25
oInformesSheet.Range("H:H").NumberFormat ="d-m-yyyy"
oInformesSheet.Range("I:I").ColumnWidth = 15
oInformesSheet.Range("J:J").ColumnWidth = 35
oInformesSheet.Range("K:K").ColumnWidth = 50
oInformesSheet.Range("L:L").ColumnWidth = 35
oInformesSheet.Range("L:L").NumberFormat ="d-m-yyyy"
oInformesSheet.Range("M:M").ColumnWidth = 35


oInformesSheet.Range("A1:M1" & r & "").Font.Size = 8

oSS.Windows(1).ViewableRange = oInformesSheet.UsedRange.Address
end sub

sub terminar()
oInformesSheet.Activate
oSS.Windows(1).ViewableRange = oInformesSheet.UsedRange.Address
oSS.DisplayToolbar = True
oSS.AutoFit = false
oInformesSheet.Protection.Enabled = false
oInformesSheet.Activate
Response.Write oSS.XMLData
Response.End
end sub

%>
  #13 (permalink)  
Antiguo 24/02/2012, 11:37
 
Fecha de Ingreso: febrero-2012
Mensajes: 3
Antigüedad: 12 años, 2 meses
Puntos: 0
Respuesta: Problema al Generar Archivo excel desde ASP

solucionado, gracias

Etiquetas: asp, excel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:49.