Como se pasa un XLS a un DBF?

7,056 views
Skip to first unread message

Juan Moreyra

unread,
Sep 28, 2010, 1:04:19 PM9/28/10
to mundovis...@googlegroups.com
Como puedo pasar un archivo XLS a DBF?
 
algun ejemplo?
 
Gracias....

Juan Moreyra

unread,
Sep 28, 2010, 1:54:12 PM9/28/10
to mundovis...@googlegroups.com
Mas explicacion:
- Existen sistemas de terceros, que migarn a excel su data.
- Lo que quiero es ese archivo en excel convertilo en un DBF con el mismo nombre de campo y todo
- he probado IMPORT y pasa todo a campos con nombre A, B, C, ..... teniendo el nombre del campo en la 1ra fila y todos los campos son CARACTER
- he probado APPE FROM pero se necesita de una tabla en la cual se va a gregando columna por columna
 
Resumiendo:
- Si el excel tiene 10, 20, 30 o X campos cada columa con su nombre quiero que al momento de pasar a DBF conserrve esos nombres
- Que se genere el DBF desde visual foxpro, en la web encontre porgramas que hacen eso, pero son externos, quiero desde foxpro
 
Conclusion:
Buscaba ayuda de algo mas facil, sino me queda la opcion de hacer un programita que me haga esto.
Pero pense que habia algo mas rapido y sencillo
 
 



 

> Date: Tue, 28 Sep 2010 10:47:28 -0700
> Subject: [Mundo Visual FoxPro] Re: Como se pasa un XLS a un DBF?
> From: gol...@gmail.com
> To: mundovis...@googlegroups.com
>
> Con la opcion Importar que tiene el Visual Foxpro.
>
> Saludos
> Guillermo
> --
> _______________________________________________________________
> Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual
> FoxPro" de Grupos de Google.
>
> Para anular la suscripción a este grupo, envía un mensaje a:
> mundovisualfox...@googlegroups.com

Daniel Manuel López

unread,
Sep 28, 2010, 2:02:47 PM9/28/10
to Zorros verdaeros
¿ Tu archivo Excel es 2007, o que version tienes?

 

From: juanmor...@hotmail.com

Guillermo MDQ

unread,
Sep 28, 2010, 1:47:28 PM9/28/10
to Mundo Visual FoxPro
Con la opcion Importar que tiene el Visual Foxpro.

Saludos
Guillermo


On 28 sep, 14:04, Juan Moreyra <juanmoreyra3...@hotmail.com> wrote:

Oscar Díaz

unread,
Sep 28, 2010, 2:07:35 PM9/28/10
to mundovis...@googlegroups.com
Estimado Juan:
 
Yo lo hago con el mismo excel version 2003 para atras, con 2007 ya NO se puede.
- En la fila 1 colocas los nombres de los campos, entiendo que así lo tienes.
- Luego sombreas todo como si quisiera imprimir.
- Luego le das archivo - guardar como - dbase IV - le das el nombre y LISTO queda en dbf.
- en dbf lo puedes abrir con vfp.
 
Espero le ayude.
 
Exitos...
 
Oscar Díaz desde Bogotá.co

Daniel Manuel López

unread,
Sep 28, 2010, 3:13:17 PM9/28/10
to Zorros verdaeros
Hola Juan, revisa la siguiente dirección. Hojala esto te ayude:
 
http://support.microsoft.com/kb/949529
 
Saludos
 
Daniel Manuel López

 

From: juanmor...@hotmail.com


Mas explicacion:
- Existen sistemas de terceros, que migarn a excel su data.
- Lo que quiero es ese archivo en excel convertilo en un DBF con el mismo nombre de campo y todo
- he probado IMPORT y pasa todo a campos con nombre A, B, C, ..... teniendo el nombre del campo en la 1ra fila y todos los campos son CARACTER
- he probado APPE FROM pero se necesita de una tabla en la cual se va a gregando columna por columna
 
Resumiendo:
- Si el excel tiene 10, 20, 30 o X campos cada columa con su nombre quiero que al momento de pasar a DBF conserrve esos nombres
- Que se genere el DBF desde visual foxpro, en la web encontre porgramas que hacen eso, pero son externos, quiero desde foxpro
 
Conclusion:
Buscaba ayuda de algo mas facil, sino me queda la opcion de hacer un programita que me haga esto.
Pero pense que habia algo mas rapido y sencillo
 

Ing.Daniel Bojorge

unread,
Sep 28, 2010, 3:05:10 PM9/28/10
to mundovis...@googlegroups.com
Hacete tu propia función, utilizá el el GetObject y funciona bastante bien....

O realizá automation....


Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

Miguel Canchas

unread,
Sep 28, 2010, 3:57:32 PM9/28/10
to mundovis...@googlegroups.com
Hace un tiempo tuve esta función, creo que lo perdi que sacaba los nombres de usuario o nombre de la maquina dentro de una red, ahora tengo que hacer un barrido para poder obtener esos datos, please a quien lo tuviera se lo agradeceria.
 
Gracias
 
MK
 

Jose Temporini

unread,
Sep 28, 2010, 5:13:48 PM9/28/10
to mundovis...@googlegroups.com

Juan Moreyra

unread,
Sep 28, 2010, 4:34:47 PM9/28/10
to mundovis...@googlegroups.com
Gracias Daniel
 
esta bueno el ejemplo, claro que no siempre la hoija es "Sheet1", la duda seria, como hago para que sea la 1ra hoa o como se el nombre de las hojas, pero en general esta bueno el ejemplo, me da otras ideas
 
a ver si hay otro modo mas simple
 
Saludos.
 
*-----------------------------------
* AUTHOR: Trevor Hancock
* CREATED: 02/15/08 04:55:31 PM
* ABSTRACT: Code demonstrates how to connect to
* and extract data from an Excel 2007 Workbook
* using the "Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
* from the 2007 Office System Driver: Data Connectivity Components
*-----------------------------------
LOCAL lcXLBook AS STRING, lnSQLHand AS INTEGER, ;
    lcSQLCmd AS STRING, lnSuccess AS INTEGER, ;
    lcConnstr AS STRING
CLEAR

lcXLBook = [C:\SampleWorkbook.xlsx]

lcConnstr = [Driver=] + ;
    [{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] + ;
    [DBQ=] + lcXLBook

IF !FILE( lcXLBook )
    ? [Excel file not found]
    RETURN .F.
ENDIF
*-- Attempt a connection to the .XLSX WorkBook.
*-- NOTE: If the specified workbook is not found,
*-- it will be created by this driver! You cannot rely on a
*-- connection failure - it will never fail. Ergo, success
*-- is not checked here. Used FILE() instead.
lnSQLHand = SQLSTRINGCONNECT( lcConnstr )

*-- Connect successful if we are here. Extract data...
lcSQLCmd = [Select * FROM "Sheet1$"]
lnSuccess = SQLEXEC( lnSQLHand, lcSQLCmd, [xlResults] )
? [SQL Cmd Success:], IIF( lnSuccess > 0, 'Good!', 'Failed' )
IF lnSuccess < 0
    LOCAL ARRAY laErr[1]
    AERROR( laErr )
    ? laErr(3)
    SQLDISCONNECT( lnSQLHand )
    RETURN .F.
ENDIF

*-- Show the results
SELECT xlResults
BROWSE NOWAIT
SQLDISCONNECT( lnSQLHand )

 



 

From: dman...@hotmail.com
To: mundovis...@googlegroups.com
Subject: RE: [Mundo Visual FoxPro] Re: Como se pasa un XLS a un DBF?
Date: Tue, 28 Sep 2010 14:13:17 -0500

Cristobal Galvan

unread,
Sep 28, 2010, 5:36:59 PM9/28/10
to mundovis...@googlegroups.com
Usa este codigo, espero te ayude:

**------ LEE FORMATO XLS -----------**
lcFileSua = GETFILE("XLS")
loExcel   = GETOBJECT(lcFileSua)
lnRen     = 2
lnRecords = 2000

FOR lnReg = 1 TO lnRecords
        ?  loExcel.Sheets(1).Cells(lnRen, 2).Value
        ? loExcel.Sheets(1).Cells(lnRen, 3).Value
        ? loExcel.Sheets(1).Cells(lnRen, 4).Value
    lnRen = lnRen + 1
ENDFOR    


Cristobal E. Galvan Nicasio




From: debs....@gmail.com
Date: Tue, 28 Sep 2010 13:05:10 -0600
Subject: Re: [Mundo Visual FoxPro] Re: Como se pasa un XLS a un DBF?
To: mundovis...@googlegroups.com

Daniel Manuel López

unread,
Sep 28, 2010, 6:05:16 PM9/28/10
to Zorros verdaeros
Cuando tu abres cualquier hoja de excel, en la parte inferior dice la(s)
páginas que utilizas, ejem. Hoja1, Hoja2, Hoja3, o el nombre que estes
usando, Sheet1 lo ponen porque asi en en inglés, pero solo habre la hoja
y ve que nombre usas y ese lo pones e el programa.
 
En caso de que la página contenga sólo numeros en el nombre, se debe
indicar como: si es 101 debe ponerse " '101$' " y si contiene letras y
numeros: si es Hoja1 debe ser "Hoja1$".
 
Si logras hacer que el ejemplo funcione, y si quieres profundizar más
sobre como automatizar por estos metodos. Me avizas y te paso los
programas que yo utilizo para traer de excel a dbfs, y que incluyen:
 
1- Que el programa lea y te reporte todas las páginas que contiene
    una hoja de excel.
2- que las concatene
3- Otras funciones más compleja.
 
Saludos
Atentamente
 
Daniel Manuel
 

 

From: juanmor...@hotmail.com

To: mundovis...@googlegroups.com
Subject: RE: [Mundo Visual FoxPro] Re: Como se pasa un XLS a un DBF?
Date: Tue, 28 Sep 2010 20:34:47 +0000

Cristobal Galvan

unread,
Sep 28, 2010, 6:55:36 PM9/28/10
to mundovis...@googlegroups.com
Usa: GETENV()

?GETENV("USERNAME")


Cristobal E. Galvan Nicasio




From: mcan...@tracusape.com
To: mundovis...@googlegroups.com
Subject: [Mundo Visual FoxPro] Obtener el nombre de usuario
Date: Tue, 28 Sep 2010 14:57:32 -0500


Hace un tiempo tuve esta función, creo que lo perdi que sacaba los nombres de usuario o nombre de la maquina dentro de una red, ahora tengo que hacer un barrido para poder obtener esos datos, please a quien lo tuviera se lo agradeceria.
 
Gracias
 
MK
 

Daniel Manuel López

unread,
Sep 28, 2010, 6:20:44 PM9/28/10
to Zorros verdaeros
Claro que hay otras formas sencillas:
 
Hay 3 maneras de realizar esta tarea:
 
 1. Exportar la(s) hoja(s) de Excel como archivos delimitados por
    comas (.CSV) y utilizar el comando IMPORT o el Asistente de
    VFP para importar el o los archivos.
 
 2. Escribir código VFP de automatización OLE para automatizar a
    Excel y extraer sus datos.
 
 3. Usar Driver ODBC de Microsoft Excel (*. xls , *. xlsx , *. xlsm , *. xlsb),
    incluido con el controlador de Office System 2007 : paquete
    de componentes de conectividad de datos para accesar y extraer
    datos del libro de Excel, ya sea a través de una vista remota
    VFP o mediante programación, como es codigo que bajaste.

Más sencillo, me gustaría saber cómo.
 
Atte

Daniel Manuel

From: juanmor...@hotmail.com
To: mundovis...@googlegroups.com
Subject: RE: [Mundo Visual FoxPro] Re: Como se pasa un XLS a un DBF?
Date: Tue, 28 Sep 2010 20:34:47 +0000
Message has been deleted

Juan Moreyra

unread,
Sep 29, 2010, 1:24:41 AM9/29/10
to mundovis...@googlegroups.com
Hola Daniel:
 
El ejemplo si funciona, obviamente por eso me di cuenta del Sheet1 y preguntaba como saber el nombre de la hoja? porque a veces el usuario lo cambia Ejm: ENERO2010, etc
Esta bacan el ejemplo, y me sorprendió que solo modificando los nombres, funcionara :)
 
El problema es que todo lo que es texto, lo pasa como memo (es manejable), algunos numericos le pone NULL y otras cositas
Pero basicamente hace lo que queria, que como nombre del campo ponga el titulo de la columna
 
Si tienes ejemplos como los que especificas, seria bueno si lo compartas, aunque uno no lo entienda rapidamente, revisando y revisando algo se aprende.
 
Explico como me gustaria que funcione lo que quiero hacer, a ver si me entienden algito:
- No quiero pasar de excel a DBF con "guardar como"
- No quiero usar programas externos
 
Independiente del sistema que genere el archivo de excel
lo que se quiere, es que esos archivos que se generen, el usuario solamente los copie en una carpeta especifica
nada mas, usualmente el usuario no conoce mucho, solo necesito que copie los archivos que genere el sistema en excel a una carpeta
 
Es por eso que el programa en visual foxpro, debe encargarse en recoger este archivo
por lo que necesito que el o los archivos de excel se conviertan en DBF algo asi como
 
=_convert_XLS_DBF('nombre_archivo_excel', 'tabla_dbf')
o
=_convert_XLS_DBF('ruta\*.xls')
 
una funcion asi de simple, la cual debe encargarse de leer el archivo de excel con las columnas conservando su nombre y su tipo de dato
 
de todos los ejemplos que estan mandando, me estoy inclinando por hacer la rutina en visual foxpro nomas usando el IMPORT, que se acerca mas
pero no conserva los nombres, crea campos, A,B,C,D,etc y todos los campos los toma como CARACTER
pero leyendo la 1ra linea de la tabla que crea el IMPORT y asumiendo tamaño y otras cositas, puedo hacer la rutina y crear temporales para armar la estructura y crear la tabla
(cosa que estaba haciendo y me doy con la sorpresa que no puedo hacer un CREATE TABLE con campos con nombres largos, pero en CREATE CURSOR si se puede)
haciendo esta rutina solo le pasaria 2 parametros y me devolveria el archivo de XLS en DBF
 
Resumiendo:
Cualquier ayuda sirve, se agradece si subes tus rutinas para revisarlo, algo sacaré :)

Saludos. 

 
 


From: dman...@hotmail.com
To: mundovis...@googlegroups.com
Subject: RE: [Mundo Visual FoxPro] Re: Como se pasa un XLS a un DBF?
Date: Tue, 28 Sep 2010 17:05:16 -0500

Jaime H. Díaz G.

unread,
Oct 4, 2010, 3:58:35 PM10/4/10
to mundovis...@googlegroups.com
Para esa necesidad en especial yo simplemente uso sys(0).

Jaime H. Díaz G.

unread,
Oct 4, 2010, 3:59:04 PM10/4/10
to mundovis...@googlegroups.com
Para esa necesidad en especial yo uso sys(0).
Reply all
Reply to author
Forward
0 new messages