Manipular ficheros Word desde Five
Manipular ficheros Word desde Five
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.
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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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.
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
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.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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
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)... 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.
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)... 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.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Usando OLE para trabajar con Word
Estimado Foro,
Tengo este ejemplo hecho con FWH;
Pero cuando ejecuta la linea marcada en rojo, me da el siguiente error:
¿alguna idea?
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
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)
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact: