Page 1 of 1

Manipular ficheros Word desde Five

Posted: Wed Mar 19, 2008 8:22 pm
by jfafive
Hola a todos, tengo una duda y es que desde clipper puedo procesar ficheros a bajo nivel .txt, ya sabeis fwrite() fread() memoread() y todo eso.

Mi pregunta es si se puede procesar ficheros de otros formatos como word, excel, pdf etc desde five para extraer cadenas de texto, modificar, etc etc.

Gracias y un saludo.
Javier.

Posted: Wed Mar 19, 2008 9:30 pm
by Antonio Linares
Hola Javier,

Desde FiveWin 16 bits (para Clipper) no puedes hacerlo, ya que necesitas usar la clase TActiveX (solo disponible en 32 bits).

Con FWH (FiveWin para Harbour/xHarbour) puedes usar activex y manejar documentos word, excel, pdf, etc. perfectamente. En estos foros hay muchos ejemplos de uso.

harbour

Posted: Fri Mar 21, 2008 10:39 am
by jfafive
Perdón por mi ginorancia, pero yo solo domino clipper y fivewin.

¿Es la misma sintaxis el harbour? ¿puedo ver algun ejemplo de codigo fuente sin tener que comprarlo antes?

Gracias.

harbour

Posted: Fri Mar 21, 2008 11:11 am
by jfafive
Antonio Linares wrote:Hola Javier,

Desde FiveWin 16 bits (para Clipper) no puedes hacerlo, ya que necesitas usar la clase TActiveX (solo disponible en 32 bits).

Con FWH (FiveWin para Harbour/xHarbour) puedes usar activex y manejar documentos word, excel, pdf, etc. perfectamente. En estos foros hay muchos ejemplos de uso.
Estoy buscando la forma de extraer cadenas de caracteres o contarlas o modificarlas de esos ficheros. ¿donde puedo encontrar un ejemplo? tambien quisiera ver un ejemplo de la sintaxis de harbour, ya que yo programo en clipper y fivewin pero no se si me costaria mucho adaptarme.

Posted: Fri Mar 21, 2008 3:14 pm
by Antonio Linares
Javier,

Harbour es 100% compatible con Clipper, pero genera aplicaciones en 32 bits :-)

Los ejemplos de FiveWin en el directorio samples, pueden construirse sin modificaciones (practicamente) con Harbour.

No disponemos de versión demo

Posted: Wed Mar 26, 2008 12:08 am
by alex_cyr
que tal Javier, utilizo word para generar la saldia de documentos tomado como base un documento prefabricado (plantilla) nunca he intentado crear desde "cero" un documento pero segun yo, si se puede...

con lo que utilizo puedo buscar un texto expecifico, seleccionar toda una linea, copiar y pegar texto, reemplazar texto y pegar lineas de texto (mis necesidades no han hido mas alla)... :lol: te pongo un ejemplo de como lo hago, por cierto esto me funciona con FW+clipper y tambien con FWH + xharbour

CON FW+CLIPPER necesitas "linkear" la OLE2.LIB
CON FWH+xHarbour debe funcionar natural.


oWord:=TOleAuto():New( "Word.Application" )
oWord:Documents:Open("C:\DOCTO.DOC")

oTexto := oWord:Selection()
oclip := oWord:Selection()

*PARA REEMPLAZAR UN TEXTO
oTexto:HomeKey(6) //NOS VAMOS AL INICIO DEL DOCUMENTO
oTexto:find:text := "CADENA" //LO QUE VOY A BUSCAR
oTexto:find:Forward = .t. //BUSCAR HACIA ABAJO
if oTexto:find:execute() //EJECUTAR LA BUSQUEDA Y SI FUE TRUE
oTexto:Text := "HOLA MUNDO" //REEMPLAZO EL TEXTO
endif

*PARA COPIAR UN TEXTO
oTexto:HomeKey(6) //NOS VAMOS AL INICIO DEL DOCUMENTO
oTexto:find:text := 'CADENA' //LO QUE VOY A BUSCAR
oTexto:find:Forward = .t. //BUSCAR HACIA ABAJO
if oTexto:find:Execute() //EJECUTAR LA BUSQUEDA Y SI FUE TRUE
oclip:SelectRow() //SELECCIONO EL RENGLON
oclip:Copy() //COPIO LA SELECCION
endif

*PARA PEGAR ALGO QUE COPIE
oclip:paste()
*PARA CORTAR LA SELECCION
oclip:CUT()


oWord:Set("WindowState", 1 ) // Maximizado
oWord:Set("PrintPreview",1)
oZoom:=oWord:get("ActiveWindow"):get("ActivePane"):get("View"):get ("zoom")
oZoom:pagefit := 2
oWord:Visible := .T.

oTexto:End()
oword:end() //Esto NO va en xharbour


pues esto es mas o menos como lo uso ojala te sirva...
Saludos.
Alex.

Gracias

Posted: Thu Mar 27, 2008 8:54 pm
by jfafive
Muchas gracias Alex por tu respuesta. Con esto será suficiente para entender el concepto y tener una base.

Salu2.
Javier. :wink:

Posted: Sat Mar 29, 2008 9:25 am
by Antonio Linares
Javier,

Esperamos tu llamada para darte asistencia remota configurando FWH :-)

Usando OLE para trabajar con Word

Posted: Sun May 18, 2008 9:15 pm
by jfafive
Estimado Foro,

Tengo este ejemplo hecho con FWH;

Code: Select all

#include "Fivewin.ch"

function Main()

   local oWord, oTxt

   oWord := TOLEauto():New( "Word.Application" )
   oTxt  := oWord:Selection()

   oWord:Documents:Open( "c:\fwh\g\dbf\plantilla\DOCU.DOC" )

   [color=red]oTxt:Find:Text    := "([NOMBRE])"[/color]
   oTxt:find:Forward := .T.
   oTxt:find:execute()

   oTxt:Text := "Margarita"

   oWord:Visible := .T.

return nil
Pero cuando ejecuta la linea marcada en rojo, me da el siguiente error:

Code: Select all

Application
===========
   Path and name: C:\FWH\G\DBF\ole.exe (32 bits)
   Size: 1,139,712 bytes
   Time from start: 0 hours 0 mins 0 secs 
   Error occurred at: 05/18/08, 23:13:58
   Error description: Error 1438684/9  'Item' no es ninguna propiedad.: OPEN
   Args:
     [   1] = C   c:\fwh\g\dbf\plantilla\DOCU.DOC

Stack Calls
===========
   Called from:  => TOLEAUTO:OPEN(0)
   Called from: ole.prg => MAIN(10)
¿alguna idea?

Posted: Mon May 19, 2008 11:39 am
by Antonio Linares
Javier,

Prueba a poner una llamada a MsgInfo() aqui para ver si llega:

oWord:Documents:Open( "c:\fwh\g\dbf\plantilla\DOCU.DOC" )
MsgInfo( "abierto" )

Posted: Mon May 19, 2008 4:55 pm
by jfafive
Si llega, Antonio.