Page 1 of 1

De Excel a dbf.

Posted: Thu Jul 13, 2006 4:50 pm
by Raymundo Islas M.
Hola a todos

Normalmente se han visto muchos post acerca de las clases para exportar los datos de una DBF a un archivo XLS aplicando formulas, propiedades del texto, alineacion, etc, etc , en este momento ando buscando lo inverso : poder leer y obtener los datos desde un archivo excel, no me importa realizar ninguna operacion, simplemente leer todas las lineas de X columnas, sin necesidad de convertir el archivo a dbf 8)

Alguna sugerencia ?

Saludos

saludos

Posted: Thu Jul 13, 2006 5:33 pm
by QAZWSX2K
ando en eso mismo desde hace como 2 meses y he probado una tal clase toleauto pero lamento decepcionarte que no me sirve, si lo logro hacer te paso el dato mientras puedes probar tu a ver si esa clase te sirve

Posted: Thu Jul 13, 2006 5:41 pm
by Raymundo Islas M.
Ok alejandro

Enterado.

Seguimos buscandole.

Gracias

Posted: Thu Jul 13, 2006 6:05 pm
by R.F.
Mantado pulgas a cañonazos como toda la vida.... jejejejeje

Eso siempre se ha podido hacer con OLE, vean este ejemplo:

Code: Select all

  LOCAL oExcel, oHoja, nRows, nCols
    LOCAL TCampos:={}, nRow, nCol

    oExcel := TOleAuto():New( "Excel.Application" )

     *oExcel:Visible := .T. // por si quieres ver la hoja abierta

    oExcel:WorkBooks:Open(cGetFile("*.XLS", "Seleccione Fichero")) 

    oHoja := oExcel:Get( "ActiveSheet" )

    nRows := oHoja:UsedRange:Rows:Count()
    nCols := oHoja:UsedRange:Columns:Count()

   USE <tu dbf>

   FOR nRow := 2 TO nRows
      APPEND BLANK
      FOR nCol := 1 TO nCols
         xValue := oHoja:Cells(nRow,nCol):Value
         FieldPut(nCol,xValue)
         SysRefresh()
      NEXT
      DBCOMMIT()
      Memory(-1)
   NEXT
   oExcel:Quit()
   oHoja:End()
   oExcel:End()
  

Posted: Thu Jul 13, 2006 6:27 pm
by Raymundo Islas M.
Master Flores

Como siempre, ofreciendonos una solucion directa, cuando vemos o creemos que es muy dificil el asunto.

Muchas gracias, enseguida hago pruebas.

Saludos

Posted: Thu Jul 13, 2006 6:38 pm
by Raymundo Islas M.
Perfecto !!!!

Puedo hacer exactamente lo que necesitaba.

Once again Master Flores, thanks a lot :lol:


Saludos

Re: saludos

Posted: Thu Jul 13, 2006 8:43 pm
by Manuel Valdenebro
QAZWSX2K wrote:ando en eso mismo desde hace como 2 meses y he probado una tal clase toleauto pero lamento decepcionarte que no me sirve, si lo logro hacer te paso el dato mientras puedes probar tu a ver si esa clase te sirve
Para Clipper, necesitas la libreria Ole2.lib
Para Harbour, necesitas hbole.lib.
Para xHarbour no necesitas nada (viene implementada).

No he trabajado con Harbour. Pero tanto con Clipper + Ole2.lib, como con xHarbour, excel funciona muy bien.

ummm

Posted: Sat Jul 15, 2006 4:57 pm
by QAZWSX2K
estimado rene pudistes haberme contestado eso a mi tanbien hace mas de un mes que pregunte por eso y solo me ayudastes diciendo que a lo mejor tenia excel incompleto, de todos modos gracias

Posted: Sun Jul 16, 2006 1:30 am
by Vikthor
La clase TExcels también les puede ser muy útil.


..No te pido que me des el pescado , sino que me enseñes a pescar.....

Re: ummm

Posted: Mon Jul 17, 2006 1:39 am
by R.F.
QAZWSX2K wrote:estimado rene pudistes haberme contestado eso a mi tanbien hace mas de un mes que pregunte por eso y solo me ayudastes diciendo que a lo mejor tenia excel incompleto, de todos modos gracias
HQJ (Hay que jo...) ahora resulta que tengo que dar soluciones concretas en momentos especificos.... ya me vale :wink:

Ha veces soy tan irresponsable.... que yo mismo me sorprendo :D

Re: ummm

Posted: Mon Jul 17, 2006 1:21 pm
by QAZWSX2K
pues si que J...jejeje , sin animos de ofender ni nada, estamos claro que no es obligacion de nadie en ningun momento, pero hay momentos en que........espero lo tomes humoristicamente, que mas nos queda
RF wrote:
QAZWSX2K wrote:estimado rene pudistes haberme contestado eso a mi tanbien hace mas de un mes que pregunte por eso y solo me ayudastes diciendo que a lo mejor tenia excel incompleto, de todos modos gracias
HQJ (Hay que jo...) ahora resulta que tengo que dar soluciones concretas en momentos especificos.... ya me vale :wink:

Ha veces soy tan irresponsable.... que yo mismo me sorprendo :D

Posted: Fri Jul 13, 2007 2:14 pm
by MarioG
Retomo este antiguo hilo debido a que si bien todo funciona ok, en el siguiente excenario, se produce un error con el metodo :End():

Code: Select all

   oExcel := TOleAuto():New( "Excel.Application", .F. )
   oExcel:WorkBooks:Open( cFilePath )
   oExcel:Sheets( 1 ):Select()

   oHoja := oExcel:Get( "ActiveSheet" )
   nTotalRows := oHoja:UsedRange:Rows:Count()

   for nRow := 8 to nTotalRows
        ...
   next

   oExcel:WorkBooks:Close()
   oExcel:Quit()
   oExcel:End()     [b]me devuelve error[/b]
   oExcel := NIL
Lo puedo comentar?; es suficiente con oExcel:Quit() ?
Tengo instalado la versión 2003 de Office, aunque obviamente no todos los clientes pueden tenerla instalada.

gracias

Posted: Fri Jul 13, 2007 4:31 pm
by R.F.
Quita el END(), con el solo Quit() es mas que suficiente.

Posted: Fri Jul 13, 2007 9:05 pm
by sysctrl2
un Voto mas por texcel,

no solamente hace eso ,, hace mucho mas,,,

ayer presisamente me tope con que tenia que leer un archivo de

codigos postales en excel,

el libro, tenia 21 pestañas, y en cada hoja habian entre 500 y 3 mil renglones


estudiando un poquito la texcel,

solucione el problema,



saludos..

Posted: Fri Jul 13, 2007 11:05 pm
by MarioG
muchas gracias