Re: [java-l] Metodo SaveAS de WordDocument no funciona

Guido no tengo la KB a mano, en la tarde te lo envio.
No uso plantillas, no uso la propiedad template.
Copio la "plantilla" (que es un archivo word con palabras a reemplazar) en otra carpeta, y luego trabajo con ese archivo haciendo replace y demas...
En la tarde te envio fragmentos de codigo...
Saludos.-

El 16 de septiembre de 2010 15:59, Guido Gaona <doguelgaocan@gmail.com> escribió:
Gustavo, un último intento, podrías pegar un poco de tu código acá?
Gracias de ante mano.

El 16 de septiembre de 2010 13:30, Guido Gaona <doguelgaocan@gmail.com> escribió:

Entonces no haces uso de la propiedad Template no? Osea, directo le haces Open al nuevo documento copiado con File.Copy.
Tampoco me funciona de esa manera.
Bueno, veré tal vez otra alternativa a esto.
Gracias Gustavo.

El 16 de septiembre de 2010 13:01, Gustavo <elgusta@gmail.com> escribió:

Si, utilizo el mismo procedimiento siempre, es decir, con file me copio mi "plantilla" a un directorio, y luego trabajo con ese archivo.


El 16 de septiembre de 2010 10:16, Guido Gaona <doguelgaocan@gmail.com> escribió:

Directamente estoy probando en Windows en la PC de desarrollo, tengo esos jar en un directorio desde donde las apunto en el classpath, compilo y ejecuto desde Genexus directamente (sin publicar) y esos jar Genexus los lleva al directorio del modelo, osea, están todos. Pero también he probado publicando y en las dependencias agrego todos los jar necesarios, es aquí donde hay mucha diferencia entre nuestras aplicaciones.

¿Estás usando el tipo de datos File siempre? A mi tampoco me funcionó de esa forma.
Ahora imprimo un mensaje si tira error al tratar de tomar OpenOffice y veo que es ahí ya que salta error.
    &Plantilla.UseMSOffice = 0
    if &Plantilla.ErrCode <> 0
        msg(&Plantilla.ErrDescription+' Error al intentar utilizar OpenOffice. Error: '+trim(str(&Plantilla.ErrCode)))
    else
         ....

El 16 de septiembre de 2010 09:05, Gustavo <elgusta@gmail.com> escribió:

Y copiaste las librerias del open office en /lib? La version es la ultima, la 3.2.1...
Y al documento te lo graba en blanco tambien? o es cuando lo muestra que esta en blanco?
Saludos.-

El 16 de septiembre de 2010 09:55, Guido Gaona <doguelgaocan@gmail.com> escribió:

No se qué me ha de estar faltando.
¿Con qué versión de OpenOffice estás?
La gran diferencia entre nuestras aplicaciones es que la tuya es Web.

El 16 de septiembre de 2010 08:52, Guido Gaona <doguelgaocan@gmail.com> escribió:

Gustavo, tengo toda la librería en el classpath y también levantado el servicio del OpenOffice, pero me solo me abre un documento vacío al finalizar. Este es mi código:
    PGenDa018.Call(&unix, '') //devuelve el sistema operativo en que corre la aplicación.
    if &unix = 'UNIX' //linux
        &PthArc = 'PLANTILLAS/CONTRATO PF'
    else //windows
        &PthArc = 'PLANTILLAS\CONTRATO PF'
    endif

    &Plantilla.UseMSOffice = 0  //OpenOffice
    &Plantilla.Template = &PthArc+'.dot' //tomamos la plantilla.
    //&File.Source = &PthArc+'.doc'
    if &Plantilla.ErrCode <> 0
        msg(&Plantilla.ErrDescription)
    endif

    &TxtFchHra = TToc(ServerNow())              ////////
    &TxtFchHra = StrReplace(&TxtFchHra,'/','')    //
    &TxtFchHra = StrReplace(&TxtFchHra,':','')    // Crea Nombre de Archivo
    &TxtFchHra = Trim(&TxtFchHra)                 //
    &TxtFchHra = StrReplace(&TxtFchHra,' ','-') ////////
    &PthArc = &PthArc + &TxtFchHra + '.doc' //al nombre de la plantilla le agregamos la fecha

   //&File.Copy(&PthArc)

    &Plantilla.Close()
    &Plantilla.Open(&PthArc) //especificamos el nombre del archivo a generar en base a la plantilla.
    If &Plantilla.ErrCode <> 0
        msg(&Plantilla.ErrDescription+' Ha ocurrido un error.'+' Error: '+trim(str(&Plantilla.ErrCode)))
    else
        For Each
        Where AhrCtaSocNro = &PerSocNro
        Where AhrCtaTpoCod = &AhrTpoCod
        Where AhrCtaNro = &AhrCtaNro 
            &Pzo = Trim(Str(AhrCtaDiasPlazo,3,0))
            &Plantilla.Replace('[PLAZO]',&Pzo,0,0)
            &Plantilla.Replace('[RAZON SOCIAL SOCIO]',AhrCtaApeNom,0,0)
            //&Plantilla.Save()
            &Plantilla.Show()
            &Plantilla.Unbind()
EndIf

Mi classpath:
gxclassr.zip;GxUtils.jar;iText.jar;poi.jar;.;C:\Archivos de programa\ARTech\GeneXus\GeneXus90\gxjava\swt.jar;D:\GUIDO\CPC\UTIL\Drivers\postgresql-8.4-702.jdbc4.jar;D:\GUIDO\CPC\UTIL\Ooo\3.2.0\juh.jar;D:\GUIDO\CPC\UTIL\Ooo\3.2.0\jurt.jar;D:\GUIDO\CPC\UTIL\Ooo\3.2.0\ridl.jar;D:\GUIDO\CPC\UTIL\Ooo\3.2.0\sandbox.jar;D:\GUIDO\CPC\UTIL\Ooo\3.2.0\unoil.jar

No se qué es lo q

El 15 de septiembre de 2010 21:47, Gustavo <elgusta@gmail.com> escribió:

Amigo Guido... anda fenomeno el open office con las funcionalidades de WordDocument.
Copia los jars necesarios en la libreria y levantas el servicio de open office:

&ltOOffice_path>\soffice "-accept=socket,host=ServerName,port=8100;urp;StarOffice.ServiceManager"

Saludos.-

El 15 de septiembre de 2010 12:00, Gustavo <elgusta@gmail.com> escribió:

Dicho y hecho... me dio error tb al intentar utilizar open office...


El 13 de septiembre de 2010 17:37, Gustavo <elgusta@gmail.com> escribió:

Mira... la verdad espero que no te ande y que sea otro el problema... sino talvez me pase lo mismo a mi jajaja... (cuando pruebe en linux las funcionalidades con open office)

El 13 de septiembre de 2010 17:17, Guido Gaona <doguelgaocan@gmail.com> escribió:

¿Crees que será posible procesar el documento abierto mediante shell? Pues necesito hacer uso del método Replace para modificar el documento.
Voy a probarlo apenas pueda.
Te cuento si tengo novedad.
Gracias de nuevo.

El 13 de septiembre de 2010 16:11, Gustavo <elgusta@gmail.com> escribió:

Encontre esto:

http://www.gxopen.com/forumsr/servlet/viewthread?ARTECH,3,164802

Suerte.

El 13 de septiembre de 2010 16:34, Guido Gaona <doguelgaocan@gmail.com> escribió:

Fue un "victoria antes de tiempo". Se reinstaló el sistema operativo en esta PC y tuve que configurar de vuelta todo, lo malo fue que no agregué todas las dependencias al claspath y entonces como dice el SAC  # 18847 http://www.gxtechnical.com/gxdlsp/pub/sac/hsac_18847,s.html sigue y toma Office (con Office funciona correctamente), fue lo que me pasó, finalmente agregué los jar correspondientes y sigue sin funcionar, solo que ahora es diferente el error, me tira esto:
GXOffice Error: com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported one.
Fue una pequeña sonrisa en mi rostro que se esfumo rápido, jejeje.

El 13 de septiembre de 2010 14:56, Gustavo <elgusta@gmail.com> escribió:

Bueno impecable... te funciona porque justamente el archivo se encuentra en la raiz de la aplicacion, sino tenias que utilizar carpeta/archivo.doc, sin tener en cuenta toda la ruta donde se encuentra.

Mejor asi tonces.
Saludos.-

El 13 de septiembre de 2010 15:44, Guido Gaona <doguelgaocan@gmail.com> escribió:

Gustavo, he resuelto este asunto, le paso solamente el nombre de la plantilla (que debe estar en la raíz de la aplicación) de esta manera:
&Plantilla.Template = 'CONTRATO PF'+'.DOT'
&PthArc = 'CONTRATO PF' + &TxtFchHra + '.doc'
&Plantilla.Open(&PthArc)
Y funciona por fin.

El 13 de septiembre de 2010 11:20, Gustavo <elgusta@gmail.com> escribió:

La copia del archivo la hace bien entonces, y cuando lo vas a levantar se te cuelga....
La diferencia que tiene mi codigo con el tuyo (no tengo la KB a manos para verla).... es en el path...
Es decir...
Utilzo file para copiar el archivo con el path como lo tienes tu.
Pero para el open utilizo el formato (/temp/archivo.doc)... se entiende?

El 13 de septiembre de 2010 12:07, Guido Gaona <doguelgaocan@gmail.com> escribió:

No, sigo con ese problema, no me funciona tomar la plantilla, crea un documento vacío y con File copia correctamente pero no abre o por lo menos intenta abrir y queda colgada la aplicación, es como que algo bloquea el archivo o algo así.

El 13 de septiembre de 2010 11:02, Gustavo <elgusta@gmail.com> escribió:

Ok, voy a probar. Si o si para word documents van esos jar entonces.
Gracias por las respuestas... solucionaste aquel problema de que no te abria el word?

El 13 de septiembre de 2010 11:51, Guido Gaona <doguelgaocan@gmail.com> escribió:

Para ExcelDocuments con UseAutomation = 0 usa poi.jar; para WordDocument con UseMsOffice = 0 usa esos jar que te mencioné. Incluso no es necesario tener instalado Office, debe correr con Ooo para que funcione el Linux.

El 13 de septiembre de 2010 10:01, Gustavo <elgusta@gmail.com> escribió:

Pero la aplicacion en prueba la estoy corriendo en win, y tengo instalado el office... esta bien que en produccion va a correr en linux con open office... pero no deberia levantar a traves de la libreria poi segun como lo tengo parametrizado?

El 13 de septiembre de 2010 10:17, Guido Gaona <doguelgaocan@gmail.com> escribió:

Gustavo, debés agregar al classpath los jar:
juh.jar 
jurt.jar 
jut.jar 
ridl.jar 
unoil.jar
Estos se encuentran bajo la instalación del Open Office.

El 12 de septiembre de 2010 20:07, Gustavo <elgusta@gmail.com> escribió:

Guido. Hola de nuevo.
Bien, modificando esa propiedad puedo salvar el fuente.
Tengo seteado UseMSOfficre = 0, en el classpath agregue el poi.jar... en la /lib de la aplicacion tambien.
Cuando intento levantar el word document, me tira el siguiente error:
 
no gxoffice2 in java.library.path
 
Desarme el poi.jar que estoy utiizando... y la carpeta com.genexus.gxoffice se encuentra vacia... tendra algo que ver?
Gracias, saludos.-

El 9 de septiembre de 2010 10:14, Guido Gaona <doguelgaocan@gmail.com> escribió:

Intenta con la Propiedad de modelo "Funtions = Allows non-standard functions when specifying"


El 9 de septiembre de 2010 09:03, Gustavo <elgusta@gmail.com> escribió:
Che... de paso te pregunto... sabes por que no me deja setearle esa propiedad a mi? UseMSOffice = 0.... no me deja salvar el codigo si le pongo esa propiedad al worddocument...

El 9 de septiembre de 2010 09:07, Guido Gaona <doguelgaocan@gmail.com> escribió:

Gustavo, lo tengo todo como me dices y la dll no la necesito pues tengo UseMSOffice = 0 (con poi.jar y los demás jar relacionados como jut.jar, unoil.jar y demás), ya que debe correr también en Linux.
Al llegar al Open se cuelga la aplicación y debo detener el proceso.
No se si es un bug del generador o algo, pero se supone que debiera funcionar directamente haciendo uso de la propiedad Template, pero en ese caso crea un documento limpio.
Le he dado ya las vueltas que me ha venido en mente.
Gracias de nuevo.

El 8 de septiembre de 2010 19:03, Gustavo <elgusta@gmail.com> escribió:

Sisi ta bien... pero antes del open hace el close por las dudas...
luego del open trabajas libremente con el Replace.

Una vez que lo finalices utilizas &Plantilla.save().

Para abrirlo en win creo que es show... ahora si se te tranca puede ser que te este faltando la dll GxOffice2.dll en WINDOWS\system32.

Saludos.-

El 8 de septiembre de 2010 17:21, Guido Gaona <doguelgaocan@gmail.com> escribió:

Hace la copia correctamente y creo que lo encuentra puesto que es el mismo path que le paso a &File.
He probado &Plantilla.Close(&PthArc) pero igual sigue bloqueando.
Pasa que debo hacer uso de &Plantilla.Replace para modificar el documento.

El 8 de septiembre de 2010 15:53, Gustavo <elgusta@gmail.com> escribió:

Chequeaste que realizo la copia del archivo correctamente y que lo encuentra no?
Si esto es asi...

antes de &Plantilla.Open(&PthArc), coloca &Plantilla.Close(&PthArc).

De cualquier manera, el Open es para abrir el documento, para verlo en pantalla, en win creo que es Show.

Saludos.-

El 8 de septiembre de 2010 15:36, Guido Gaona <doguelgaocan@gmail.com> escribió:

Hola Gustavo, después de largo rato vuelvo a tratar de solucionar lo mismo que vos lograste resolver.
Mi aplicación es Win, definí una variable del tipo File y hago la copia correctamente, pero luego trato de abrir el documento creado con una variable del tipo WordDocument y se bloquea la aplicación.
Más o menos así:
PGenDa018.Call(&unix, &LOCATION) //con este procedimiento veo en que plataforma corre la aplicación y asigno el folder Temp o tmp.
    if &unix = 'UNIX' //linux
        &PthArc = trim(&LOCATION) + 'PLANTILLAS/CONTRATO PF'
    else //windows
        &PthArc = trim(&LOCATION) + 'PLANTILLAS\CONTRATO PF'
    endif

    &Plantilla.UseMSOffice = 0
    //&Plantilla.Template = &PthArc+'.DOT'
    &File.Source = &PthArc+'.DOC'

    &TxtFchHra = TToc(ServerNow())              ////////
    &TxtFchHra = StrReplace(&TxtFchHra,'/','')    //
    &TxtFchHra = StrReplace(&TxtFchHra,':','')    // Crea Nombre de Archivo
    &TxtFchHra = Trim(&TxtFchHra)                 //
    &TxtFchHra = StrReplace(&TxtFchHra,' ','-') ////////
    &PthArc = &PthArc + &TxtFchHra + '.DOC' //al nombre de la plantilla le agregamos la fecha
    &File.Copy(&PthArc)
    if &File.ErrCode <> 0
        msg(&File.ErrDescription)
    else
        msg('Se realizó la copia correctamente')
    endif
    &File.
    &Plantilla.Open(&PthArc)
En este punto se cuelga.

Si me puedes dar una mano sería ideal.
Gracias.

El 4 de agosto de 2010 16:51, Gustavo <elgusta@gmail.com> escribió:

Ahi probe y anduvo... impecable tocayo... es lo que voy a usar.
Saludos y gracias a todos.-


El 4 de agosto de 2010 17:19, Gustavo <elgusta@gmail.com> escribió:

Si si entendido... pruebo y te digo, saludos.-

El 4 de agosto de 2010 17:12, Gustavo Perdomo <gupe77@hotmail.com> escribió:

Digo, con esto podrías prescindir de estar harcodeando cada vez la ruta de la aplicación, y podrías instalar la misma versión en el servidor que quieras y te olvidas de las rutas...


From: gupe77@hotmail.com Date: Wed, 4 Aug 2010 16:56:57 -0300
Subject: RE: [java-l] Metodo SaveAS de WordDocument no funciona


Es probable. Es más, java...

Probá si con esto no te da la ruta donde está instalada la webapp:

java [!&Path!] = httpContext.getDefaultPath();

a &Path le concatenás '\Temp\asd.doc' o '/Temp/asd.doc' según el SO. Tendrías que verificar también la no existencia de un doble-slash, no? ('\\' - '//')

Para C# hay algo parecido...

Contanos si te anduvo...

Salu2.
Gustavo.



Date: Wed, 4 Aug 2010 15:59:01 -0300
From: elgusta@gmail.com
To: java-l@gxtech.com.uy
Subject: Re: [java-l] Metodo SaveAS de WordDocument no funciona

Sera que con el tipo de variable file, se debe usar el path completo? es decir....
File.Source = 'D:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\webapps\appname\Temp\asd.doc'  ???

El 4 de agosto de 2010 15:21, Gustavo <elgusta@gmail.com> escribió:
Las pruebas las estoy haciendo en este momento en windows... El problema es que no me levanta el archivo, por algun motivo no le gusta el path 'Temp/asd.doc', esto lo cheque con &File.Exists()

Saludos.-

El 4 de agosto de 2010 14:47, Gustavo Perdomo <gupe77@hotmail.com> escribió:

Buenas...

Tocayo, windows o linux?

Si es linux, el usuario bajo el cual corre el tomcar tiene permisos de escritura como para crear la carpeta, o al menos el archivo si la carpeta ya existe (666 o 777)?

Salu2.
Gustavo.


Date: Wed, 4 Aug 2010 14:24:01 -0300
From: elgusta@gmail.com
To: java-l@gxtech.com.uy
Subject: Re: [java-l] Metodo SaveAS de WordDocument no funciona


Sabes que esta bien la idea. Pero tampoco le da pelota al Copy...
Tengo lo siguiente:

 &File.Source = 'Temp/asd.doc'
 &File.Copy('File/asd.doc')

Deberia crearse el 'File/asd.doc' no? No se crea...


Saludos.-

El 4 de agosto de 2010 13:46, Fernando Machado (Desarrollo FUCAC) <desa@fucac.com.uy> escribió:
Yo probaría con una variable del tipo file (por lo que veo usas una variable &File pero del tipo char)
Le asignas el archivo &Variable.source='files/mensual.doc'   y podés hacerle un &Variable.copy('nuevonombre'), así luego podes usar el nuevo archivo creado
&File = 'nuevonombre'

Se entiende?

FUCAC

Fernando Machado

Desarrollo de Sistemas
Teléfono 708 88 88 Int. 114 / 099 60 34 14


De: Gustavo [mailto:elgusta@gmail.com]
Enviado el: Martes, 03 de Agosto de 2010 23:11
Para: java-l@gxtech.com.uy; gx-l@gxtech.com.uy
Asunto: [gx-l] Metodo SaveAS de WordDocument no funciona

 

Hola gente como estan.
El problema que me acontece hoy es que deseo guardar un WordDocument en otro lado y con otro nombre y me tira el error 7, el  cual indica "Could not save file", las lineas tal cual lo tengo implementado es:

&File = 'files/mensual.doc'
&WordDocument.Open(&File)

&Random = Random() * 10000
&File2 = 'temp/Mensual - '+ &Random.ToString().Trim() + '.doc'
&File2 = &File2.Trim()
&err= &WordDocument.SaveAs(&File2)
&WordDocument.Close()

Vale aclararles que el open lo esta haciendo bien porque ya probe.

De paso, otra consulta que esta relacionado, alguien sabe por que no me esta tomando el metodo "UseMSOffice" ? no me deja guardar el fuente cuando le agrego al WordDocument.


Estoy con Genexus 9, PostgreSQL y Java ... Web claro...

Muchas gracias de antemano, saludos.

--
Gustavo




--
Gustavo
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------  Antes de imprimir, piense en el Medio Ambiente.  Before printing, think about the Environment.  Avant l'impression, il faut penser à l`Environnement   Nota de confidencialidad: Este mensaje y todo documento adjunto puede contener información confidencial y protegida legalmente bajo secreto profesional. La transmisión de esta información es privada y está dirigida únicamente a la persona o entidad indicada, y su acceso por cualquier otra persona no está autorizado. Si usted ha recibido este mensaje por error, por favor infórmeselo al remitente y bórrelo.- Muchas Gracias.  Confidentiality Note: This message and all attached documents may content information that is confidential and legally protected under professional secret. Its transmission is private and solely intended for the addressees and no one else is allowed to access. If you receive this message in error, please delete it and immediately notify the sender by e-mail. Thank-you.



--
Gustavo



--
Gustavo



--
Gustavo



--
Gustavo



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Gustavo



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Guido M. Gaona C.
-------
Desarrollo de Sistemas
Genexus



--
Gustavo

--
Has recibido este mensaje porque estás suscrito al grupo "GeneXus" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a genexus@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a genexus+unsubscribe@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/genexus?hl=es.

0 Response to "Re: [java-l] Metodo SaveAS de WordDocument no funciona"

Publicar un comentario