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 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
No hay comentarios. :
Publicar un comentario
Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.