Manipular ficheros Word desde Five

Manipular ficheros Word desde Five

Postby jfafive » Wed Mar 19, 2008 8:22 pm

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

Postby Antonio Linares » Wed Mar 19, 2008 9:30 pm

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

harbour

Postby jfafive » Fri Mar 21, 2008 10:39 am

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

Postby jfafive » Fri Mar 21, 2008 11:11 am

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

Postby Antonio Linares » Fri Mar 21, 2008 3:14 pm

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

Postby alex_cyr » Wed Mar 26, 2008 12:08 am

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.
alex_cyr
 
Posts: 77
Joined: Wed Jun 28, 2006 6:38 pm
Location: Chihuahua

Gracias

Postby jfafive » Thu Mar 27, 2008 8:54 pm

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

Salu2.
Javier. :wink:
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Sat Mar 29, 2008 9:25 am

Javier,

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

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41205
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Usando OLE para trabajar con Word

Postby jfafive » Sun May 18, 2008 9:15 pm

Estimado Foro,

Tengo este ejemplo hecho con FWH;

Code: Select all  Expand view
#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  Expand view
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?
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Mon May 19, 2008 11:39 am

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

Postby jfafive » Mon May 19, 2008 4:55 pm

Si llega, Antonio.
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella


Return to FiveWin para CA-Clipper

Who is online

Users browsing this forum: No registered users and 2 guests