Manipular ficheros Word desde Five

Post Reply
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Manipular ficheros Word desde Five

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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.
regards, saludos

Antonio Linares
www.fivetechsoft.com
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

harbour

Post 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.
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

harbour

Post 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.
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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
regards, saludos

Antonio Linares
www.fivetechsoft.com
alex_cyr
Posts: 77
Joined: Wed Jun 28, 2006 6:38 pm
Location: Chihuahua

Post 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.
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Gracias

Post by jfafive »

Muchas gracias Alex por tu respuesta. Con esto será suficiente para entender el concepto y tener una base.

Salu2.
Javier. :wink:
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post by Antonio Linares »

Javier,

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

Antonio Linares
www.fivetechsoft.com
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Usando OLE para trabajar con Word

Post 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?
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Post 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" )
regards, saludos

Antonio Linares
www.fivetechsoft.com
jfafive
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Post by jfafive »

Si llega, Antonio.
Post Reply