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

Exportar a word

Estas en el tema de Exportar a word en el foro de ASP Clásico en Foros del Web. Hola de nuevo amig@s programadores ahora tengo este problemita: Tengo una consulta ya realizada, lo que ahora necesito es exportar dicha consulta a un archivo ...
  #1 (permalink)  
Antiguo 17/03/2010, 16:08
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Exportar a word

Hola de nuevo amig@s programadores ahora tengo este problemita:

Tengo una consulta ya realizada, lo que ahora necesito es exportar dicha consulta a un archivo de word con un formato ya establecido ¿como hago esto?
  #2 (permalink)  
Antiguo 17/03/2010, 17:52
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Exportar a word

Si tienes Office instalado en el servidor, puedes manipular el documento desde tu asp.

Dim wrdApp
Dim wrdDoc

Set wrdApp = Server.CreateObject("WORD.Application")
Set wrdDoc = wrdApp.Documents.Open ("<aquí la ruta del archivo>")

wrdApp.Visible = True

wrdApp.ActiveDocument.Content.Text = "Hola Mundo"
'Con esta instrucción escribes el texto en tu documento.

Espero te sirva.

Saludos!
  #3 (permalink)  
Antiguo 17/03/2010, 18:54
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

Hola marco_foros.

Gracias por la respuesta, si me genera el documento word pero lo que hace es que todos los valores resultantes de la consulta los sobreescribe uno despues del otro, dejando solo el ultimo valor visible el codigo lo implemente de la siguiente forma:

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  2. <!-- #include file="variables.asp"-->
  3. <%
  4. narchivo = "\inetpub\wwwroot\bitacora_desarrollo\reporte_desarrollo.doc"
  5. fechaini=request.QueryString("fechaini")
  6. fechafin=request.QueryString("fechafin")
  7.  
  8. Response.Clear()
  9. Dim wrdApp
  10. Dim wrdDoc
  11.  
  12. Set wrdApp = Server.CreateObject("WORD.Application")
  13. Set wrdDoc = wrdApp.Documents.Open(narchivo)
  14.  
  15.  
  16. conectar()
  17.  
  18.  
  19. sqla="select a.fecha_odt,b.cliente,a.proyecto,c.descripcion,a.realizo,clasificacion from (select fecha_odt,cliente,proyecto,"&_
  20.     "descripcion,realizo,(case when clasificacion=1 then 'CALLCENTER' when clasificacion=2 then 'ADMINISTRATIVO' when clasificacion=3 then "&_
  21.     "'BASE DE DATOS' end) clasificacion from desarrollo.bitacora_desarrollo where fecha_odt between convert(datetime,'"&fechaini&"',103) "&_
  22.     "and convert(datetime,'"&fechafin&"',103)+1) a left join (select id,nombre as cliente from desarrollo.clientes09 where area=1) b on "&_
  23.     "a.cliente=b.id left join (select id_req,descripcion,actividad from desarrollo.cat_requerimientos) c on a.descripcion=c.id_req "&_
  24.     "order by a.clasificacion,a.fecha_odt,a.realizo"
  25. 'response.Write(sqla)
  26. 'response.End()
  27. rs.Open sqla, conn
  28.  
  29. wrdApp.Visible = True
  30.  
  31. while not rs.eof
  32.  
  33. wrdApp.ActiveDocument.Content.Text = rs(0)&"<br> "
  34. wrdApp.ActiveDocument.Content.Text = rs(1)&"<br> "
  35. wrdApp.ActiveDocument.Content.Text = rs(2)&"<br> "
  36. wrdApp.ActiveDocument.Content.Text = rs(3)&"<br> "
  37. wrdApp.ActiveDocument.Content.Text = rs(4)&"<br> "
  38. wrdApp.ActiveDocument.Content.Text = rs(5)
  39.  
  40. rs.movenext
  41. wend%>

En donde tengo que cambiarle para que salgan los datos de la siguiente forma

----------------------------------
| Dato 1 | Dato2 | Dato3 | Dato 4 | Dato n |
----------------------------------
  #4 (permalink)  
Antiguo 17/03/2010, 23:43
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Exportar a word

Te está realizando los saltos de línea con el <br> ?

Intenta con vbCrLf o con un wrdApp.Selection.TypeParagraph

Saludos!
  #5 (permalink)  
Antiguo 18/03/2010, 07:46
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Exportar a word

cambiá esto:

Código:
wrdApp.ActiveDocument.Content.Text = rs(0)&"<br> "
wrdApp.ActiveDocument.Content.Text = rs(1)&"<br> "
wrdApp.ActiveDocument.Content.Text = rs(2)&"<br> "
wrdApp.ActiveDocument.Content.Text = rs(3)&"<br> "
wrdApp.ActiveDocument.Content.Text = rs(4)&"<br> "
wrdApp.ActiveDocument.Content.Text = rs(5)
Por esto:

Código:
tmp = rs(0)&"<br> "
tmp = tmp & rs(1)&"<br> "
tmp = tmp & rs(2)&"<br> "
tmp = tmp & rs(3)&"<br> "
tmp = tmp & rs(4)&"<br> "
tmp = tmp & rs(5)
wrdApp.ActiveDocument.Content.Text = tmp
¿Entendés la diferencia entre lo que hice y lo que tenías? Si no, avisá y se te explica.

También tené en cuanta lo que marco_foros dice acerca de los saltos de línea.
__________________
...___...
  #6 (permalink)  
Antiguo 18/03/2010, 11:13
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

Hola AlZuwaga he cambiado el texto como me lo haz indicado, pero no me genera el salto de linea ¿como o con que instruccion hago el salto de linea? ¿Podrian ponerme un ejemplo?

marco_foros no se como manejar vbCrLf o wrdApp.Selection.TypeParagraph, me podrias poner la sintaxis por favor

Última edición por DanX03; 18/03/2010 a las 11:20
  #7 (permalink)  
Antiguo 18/03/2010, 11:19
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Exportar a word

Cita:
Iniciado por marco_foros Ver Mensaje
Te está realizando los saltos de línea con el <br> ?

Intenta con vbCrLf o con un wrdApp.Selection.TypeParagraph

Saludos!
Necesitás más ayuda acerca de lo que dijo marco_foros?
__________________
...___...
  #8 (permalink)  
Antiguo 18/03/2010, 11:26
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

Cita:
Iniciado por AlZuwaga Ver Mensaje
Necesitás más ayuda acerca de lo que dijo marco_foros?
Si por favor
  #9 (permalink)  
Antiguo 18/03/2010, 11:33
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Exportar a word

Pues... reemplazá cada aparición de "<br> " con VBCrLf (y si no funciona con wrdApp.Selection.TypeParagraph, pero esto lo desconozco totalmente)
__________________
...___...
  #10 (permalink)  
Antiguo 18/03/2010, 11:51
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

Entonces esperare a marco_foros, ya que he remplazado cada <br> con VBCrLf y me sigue mostrando el mismo resultado
  #11 (permalink)  
Antiguo 18/03/2010, 12:17
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Exportar a word

ojo que yo dije "<br> ", comillas incluidas. Anyway... y si marcos_foro no aparece? Te quedás ahí esperando por toda la eternidad? Amigo, intente hacer las cosas, investigue, prueba y error.
__________________
...___...
  #12 (permalink)  
Antiguo 18/03/2010, 12:27
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

Cita:
Iniciado por AlZuwaga Ver Mensaje
ojo que yo dije "<br> ", comillas incluidas.
Yo lo reemplace con todo y comillas y sigue mostrando el mismo resultado

Cita:
Iniciado por Alzuwaga Ver Mensaje
Anyway... y si marcos_foro no aparece? Te quedás ahí esperando por toda la eternidad? Amigo, intente hacer las cosas, investigue, prueba y error.
Yo sigo intentando hasta encontrar el resultado, ya que no puedo depender de otra persona a que resuelva mi problema.
  #13 (permalink)  
Antiguo 19/03/2010, 11:18
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Exportar a word

Como dijo el buen AlZuwaga, tienes que reemplazar "<br>" (incluyendo las comillas) por vbCrLf.

Arma el texto como te comentó AlZuwaga y al final sólo lo mandas a word, quedando así:


Código:
tmp = rs(0) & vbCrLf
tmp = tmp & rs(1) & vbCrLf
tmp = tmp & rs(2) & vbCrLf
tmp = tmp & rs(3) & vbCrLf
tmp = tmp & rs(4) & vbCrLf
tmp = tmp & rs(5)

wrdApp.ActiveDocument.Content.Text = tmp
Te comento que esto lo he hecho y me imprimió los saltos de línea, justo como armé el texto, así que no deberías tener problemas con esto.

Saludos!!
  #14 (permalink)  
Antiguo 19/03/2010, 12:18
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

He encontrado una posible respuesta:


Código ASP:
Ver original
  1. <%
  2. response.ContentType ="application/msword"
  3. fechaini=request.QueryString("fechaini")
  4. fechafin=request.QueryString("fechafin")%>
  5. <!--#include file="variables.asp"-->
  6. <html>
  7. <head>
  8. <title>Word Test</title>
  9. <meta name="Author" content="Acme Toys">
  10. </head>
  11. <style type="text/css">
  12.  
  13. .BigTitle {
  14. font-family: Verdana, Sans-Serif;
  15. font-size: 20pt;
  16. font-weight: bold;
  17. color: #004080;
  18. }
  19.  
  20. .UserDetails {
  21. font-family: Courier New, Monospace;
  22. font-size: 12pt;
  23. }
  24.  
  25. </style>
  26. <body>
  27. <%conectar()
  28.  
  29.  
  30. sqla="select a.fecha_odt,b.cliente,a.proyecto,c.descripcion,a.realizo,clasificacion from (select fecha_odt,cliente,proyecto,"&_
  31.     "descripcion,realizo,(case when clasificacion=1 then 'CALLCENTER' when clasificacion=2 then 'ADMINISTRATIVO' when clasificacion=3 then "&_
  32.     "'BASE DE DATOS' end) clasificacion from desarrollo.bitacora_desarrollo where fecha_odt between convert(datetime,'"&fechaini&"',103) "&_
  33.     "and convert(datetime,'"&fechafin&"',103)+1) a left join (select id,nombre as cliente from desarrollo.clientes09 where area=1) b on "&_
  34.     "a.cliente=b.id left join (select id_req,descripcion,actividad from desarrollo.cat_requerimientos) c on a.descripcion=c.id_req "&_
  35.     "order by a.clasificacion,a.fecha_odt,a.realizo"
  36. 'response.Write(sqla)
  37. 'response.End()
  38. rs.Open sqla, conn
  39.  
  40. 'wrdApp.Visible = True
  41. %>
  42. <table width="100%">
  43.   <tr>
  44.     <td width="25%">Asunto</td>
  45.     <td width="25%">Detalle</td>
  46.     <td width="25%">Responsable</td>
  47.     <td width="25%">Fecha Compromiso</td>
  48.   </tr>
  49. <%while not rs.eof%>
  50.   <tr>
  51.     <td><%=rs(1)%></td>
  52.     <td><%=rs(3)%></td>
  53.     <td><%=rs(4)%></td>
  54.     <td><%=rs(0)%></td>
  55.   </tr>
  56. <%rs.movenext
  57. wend%>
  58. </table>
  59. </p>
  60. </body>
  61.  
  62. </html>

Solo que si le agrego este include
Código ASP:
Ver original
  1. <!--#include file="reporte_desarrollo.doc"-->
Que es donde tengo el formato con encabezado y pie de pagina definidos, solo abre el documento sin ningun valor.

Última edición por DanX03; 19/03/2010 a las 12:34
  #15 (permalink)  
Antiguo 19/03/2010, 12:47
 
Fecha de Ingreso: septiembre-2003
Mensajes: 96
Antigüedad: 20 años, 7 meses
Puntos: 0
Respuesta: Exportar a word

¿Y cómo piensas introducir los valores en el archivo?

Yo intenté esto, pero con un archivo de Excel y si utilizas la instrucción response.ContentType ="application/msword", tu página será vaciada, por así decirlo, en un archivo de word, pero este archivo será creado, no será la plantilla que deseas utilizar, y hasta donde sé, no hay forma de ligar tu plantilla con el archivo que te generará.

Si quieres abrir el archivo original y sobre él colocar información, tendrás que hacerlo desde el lado del servidor para trabajarlo (con las instrucciones que te puse) o crear un script con VBScript (de preferencia) para abrirlo desde el equipo del cliente, lo cual es un poco más complicado porque el cliente deberá tener el archivo de la plantilla en su equipo... ¿¿¿y si no lo tuviese???

Si quieres crear el archivo desde 0, tendrás que chutarte el código para crear la plantilla y vaciar la información.

Esto es lo que tuve que hacer yo para solucionar mi problema. Tal vez esté equivocado pero lo intenté y sólo así me funcionó; y no creo que haya mucha diferencia entre el excel y el word para estos casos.

Ya no entiendo bien qué es lo que requieres o cuál fue el problema que tuviste para crearlo como te comenté en el primer post que hice al respecto.

Si deseas visualizarlo, sólo tienes que colocar un wrdApp.Visible = True

Espero te sirva la información. Investígale y verás que encontrarás la mejor solución a lo que requieres.

Saludos!
  #16 (permalink)  
Antiguo 19/03/2010, 13:39
Avatar de DanX03  
Fecha de Ingreso: septiembre-2007
Ubicación: México D.F.
Mensajes: 148
Antigüedad: 16 años, 7 meses
Puntos: 3
Respuesta: Exportar a word

Cita:
Iniciado por marco_foros Ver Mensaje

Ya no entiendo bien qué es lo que requieres o cuál fue el problema que tuviste para crearlo como te comenté en el primer post que hice al respecto.

Mi problema es que tengo una planilla de word ya establecida, a la cual se le deben insertar los datos provenientes de la consulta dada, lo he intentando con las instrucciones que me haz dado, pero al abrir el archivo los datos los va sobreescribiendo mostrandome siempre el ultimo, he solucionado la parte del salto de linea. Este es el codigo con las instruciones dadas anteriormente:
Código ASP:
Ver original
  1. <%
  2. 'response.ContentType ="application/msword"
  3. Dim wrdApp
  4. Dim wrdDoc
  5.  
  6. Set wrdApp = Server.CreateObject("WORD.Application")
  7. Set wrdDoc = wrdApp.Documents.Open ("\inetpub\wwwroot\bitacora_desarrollo\reporte_desarrollo.doc")
  8.  
  9. wrdApp.Visible = True
  10. fechaini=request.QueryString("fechaini")
  11. fechafin=request.QueryString("fechafin")%>
  12. <!--#include file="variables.asp"-->
  13. <html>
  14. <head>
  15. <title>Word Test</title>
  16. <meta name="Author" content="Acme Toys">
  17. </head>
  18. <style type="text/css">
  19.  
  20. .BigTitle {
  21. font-family: Verdana, Sans-Serif;
  22. font-size: 20pt;
  23. font-weight: bold;
  24. color: #004080;
  25. }
  26.  
  27. .UserDetails {
  28. font-family: Courier New, Monospace;
  29. font-size: 12pt;
  30. }
  31.  
  32. </style>
  33. <body>
  34. <%conectar()
  35.  
  36.  
  37. sqla="select a.fecha_odt,b.cliente,a.proyecto,c.descripcion,a.realizo,clasificacion from (select fecha_odt,cliente,proyecto,"&_
  38.     "descripcion,realizo,(case when clasificacion=1 then 'CALLCENTER' when clasificacion=2 then 'ADMINISTRATIVO' when clasificacion=3 then "&_
  39.     "'BASE DE DATOS' end) clasificacion from desarrollo.bitacora_desarrollo where fecha_odt between convert(datetime,'"&fechaini&"',103) "&_
  40.     "and convert(datetime,'"&fechafin&"',103)+1) a left join (select id,nombre as cliente from desarrollo.clientes09 where area=1) b on "&_
  41.     "a.cliente=b.id left join (select id_req,descripcion,actividad from desarrollo.cat_requerimientos) c on a.descripcion=c.id_req "&_
  42.     "order by a.realizo,a.fecha_odt"
  43. 'response.Write(sqla)
  44. 'response.End()
  45. rs.Open sqla, conn
  46.  
  47. wrdApp.Visible = True
  48. %>
  49. <table width="100%">
  50. <%while not rs.eof%>
  51.   <tr>
  52.     <td><%wrdApp.ActiveDocument.Content.Text =rs(1)f%></td>
  53.     <% wrdApp.Selection.TypeParagraph%>
  54.     <td><%wrdApp.ActiveDocument.Content.Text =rs(3)%></td>
  55.     <% wrdApp.Selection.TypeParagraph%>
  56.     <td><%wrdApp.ActiveDocument.Content.Text =rs(4)%></td>
  57.     <% wrdApp.Selection.TypeParagraph%>
  58.     <td><%wrdApp.ActiveDocument.Content.Text =rs(0)%></td>
  59.     <% wrdApp.Selection.TypeParagraph%>
  60.   </tr>
  61. <%rs.movenext
  62. wend%>
  63. </table>
  64. </p>
  65. </body>
  66.  
  67. </html>

Etiquetas: word
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 05:28.