Saludos a todos(as): he encontrado un codigo muy interesante en el
PortalFox, pero no logro que me ejecute bien y creo que es por que no
esta bien descrito o no se como colocarlo, es decir, cual es la
funcion (de donde a donde va), que parametros debo anexar, la
estructura del documento cual es...
Se que es una inquetud tonta, pero no logro que me corra bien,
agradezco a ustedes si me guian un poco mas, gracias.
Abrir, Modificar, Guardar e Imprimir archivos .doc usando OpenOffice
Writer
local array laNoArgs[1]
local loSManager, loSDesktop, loStarDoc, loReflection,
loPropertyValue, loOpenDoc, loCursor, loFandR
loSManager = createobject( "Com.Sun.Star.ServiceManager.1" )
loSDesktop = loSManager.createInstance( "com.sun.star.frame.Desktop" )
comarray( loSDesktop, 10 )
loReflection = loSManager.createInstance
( "com.sun.star.reflection.CoreReflection" )
comarray( loReflection, 10 )
loPropertyValue = THISFORM.createStruct( @loReflection,
"com.sun.star.beans.PropertyValue" )
laNoArgs[1] = loPropertyValue
laNoArgs[1].name = "ReadOnly"
laNoArgs[1].value = .F.
* crea un archivo nuevo ...
* url = "private:factory/swriter"
* Datos que vienen de la base de datos ...
lcTmp = "nombre del origen de datos"
lcNro_infor = PADL(&lcTmp..nro_infor, 8, '0')
lcDetalle = &lcTmp..detalle
lcFecha = DTOC(&lcTmp..fecha)
* Puede usar archivos en los 2 formatos: .odt y .doc
lcArchivoOrigen = "C:/temp/modelo1.odt"
lcArchivoDestino = "C:/temp/eco" + lcNro_infor + " - " + ALLTRIM
(lcDetalle) + ".odt"
* c:\temp\eco00112638 - 53565 diaz de rodriguez
claudia.odt
lcArchivoOrigen = "C:/temp/modelo1.doc"
lcArchivoDestino = "C:/temp/eco" + lcNro_infor + " - " + ALLTRIM
(lcDetalle) + ".doc"
* c:\temp\eco00112638 - 53565 diaz de rodriguez
claudia.doc
COPY FILE (lcArchivoOrigen) TO (lcArchivoDestino)
url = "file:///" + lcArchivoDestino
loOpenDoc = loSDesktop.LoadComponentFromUrl(url, "_blank", 0,
@laNoargs)
* escribir texto en el documento ...
loCursor = loOpenDoc.text.CreateTextCursor()
loOpenDoc.text.InsertString(loCursor, "HELLO FROM VFP", .f. )
* Objeto para buscar las Marcas en el Documento
* si las marcas son encontradas, son remplazadas
* si alguna marca no existiera, no hay mayor problema, simplemente no
se remplaza
loFandR = loOpenDoc.createReplaceDescriptor
loFandR.searchRegularExpression = .T.
loFandR.setSearchString("«nro_infor»")
loFandR.setReplaceString(lcNro_infor)
loOpenDoc.ReplaceAll(loFandR)
loFandR.setSearchString("«fecha»")
loFandR.setReplaceString(lcFecha)
loOpenDoc.ReplaceAll(loFandR)
loFandR.setSearchString("«detalle»")
loFandR.setReplaceString(lcDetalle)
loOpenDoc.ReplaceAll(loFandR)
* imprime el documento
* loOpenDoc.printer()
* graba el documento ...
* loOpenDoc.store()
* grabar con otro nombre ...
* Url = "file:///C:/temp/test3.odt"
* loStarDoc.storeAsURL(URL, @laNoargs)
RETURN
* CreateStruct --*
PARAMETERS toReflection, tcTypeName
local loPropertyValue, loTemp
loPropertyValue = createobject( "relation" )
toReflection.forName( tcTypeName ).createobject( @loPropertyValue )
return ( loPropertyValue )
El CreateStruct, yo lo uso como un metodo del formulario ...
Marcelo ARDUSSO
Rafaela, Santa Fe. Argentina
*
http://wiki.services.openoffice.org...tarDesktop
*
http://user.services.openoffice.org...p?fP&t06
* vb_oo2.zip <- ejemplo en visual basic
* Archivo descargado de La Web del Programador
*
http://www.lawebdelprogramador.com
El siguiente es el archivo Modelo 1
Modelo 1
-
Protocolo Nº «nro_infor»
Fecha «fecha»
Paciente: «detalle»
Estimado/a «detalle»
Esta es una prueba para generar informes en
WRITER desde un programa de Visual Foxpro 9.0
Sin otro particular lo saludamos atte.
powered by: Visual Foxpro 9.0
Leer las respuestas