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/wiki/Documentation/BASIC_Guide/StarDesktop
* http://user.services.openoffice.org/es/forum/viewtopic.php?f=50&t=1306
* vb_oo2.zip <- ejemplo en Visual Basic descargado de La Web del Programador
* http://www.lawebdelprogramador.com
El siguiente es el archivo
Modelo 1Modelo 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
No hay comentarios.:
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.