migrar un archivo de excel 2007 a dbf desde vfp usando openoffice

1,272 views
Skip to first unread message

Edgar Barron

unread,
Mar 26, 2013, 1:10:28 PM3/26/13
to mundovis...@googlegroups.com
Hola a todos, tengo una mas de 200 archivos en excel 2007 , y deseo pasar a dfb.

los estuve haciendo registro por registro capturando las celdas y
pasando a un dbf pero se demora demasiado, por la cantidad de registro
que tiene cada archivo de excel (mas 300000)
he calculado y me va tomar correr un programa por 04 dias.

lo migre abriendo el archivo de excel con el openoffice y de ahi
migrarlo a dbf , todo esto manualmente, pero me toma un tiempo menor y
de ahi con un programa junto toda la informacion , de ahi es rapido.
pero tengo que estar ahi todo un dia aburrido haciendo esto. quiero
hacerlo de forma automatica.

la logica es la siguiente:

desde vfp, hacer un programa que me permita abrir los archivos de
excel desde el Openoffice y de ahi migrar a dbf

pero que sea de forma automatica, utilizando todos los instrucciones o
comandos del openoffice


VFOXPRO

abrir grabar (con el formarto que se requiera)
*.xlsx----->(openoffice)-------->*.dbf

lo que necesito son las instrucciones, he encontrado algunos, pero no
son tan claros

Les estaria muy agradecido si alguien me pudiera ayudar con esto y
estoy seguro que a muchos les va a ser de mucha ayuda.

Edgar

Cali c

unread,
Mar 26, 2013, 1:52:52 PM3/26/13
to mundovis...@googlegroups.com
con el office 2003 en la opcion guardar como puedes elegir
grabar cmo dbf IV y te genera la tabla en DBF
en 2007 y 2010 creo q tendrias q grabar con CSV y luego los agregas a una tabla DBF
Saludos



Edgar

--
_______________________________________________________________
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
---
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 y dejar de recibir sus correos electrónicos, envía un correo electrónico a mundovisualfox...@googlegroups.com.
Para obtener más opciones, visita https://groups.google.com/groups/opt_out.



Edgar Barron

unread,
Mar 26, 2013, 2:15:35 PM3/26/13
to mundovis...@googlegroups.com
claro puede ser pero por la cantidad de registro que tiene, el excel
2003 no lo soporta, y se perderian registro, pero lo que necesito es
que se haga de forma automatica, es decir

creo un formulario donde capturo todos los archivo de una carpeta en
un grid y desde ahi los hago correger uno por uno por una rutina que
vaya abriendo cada archivo pero con el open office y de ahi lo graba
con dbf, con el mismo nombre , todo esto ya lo hice manualmente pero
me toma mucho tiempo , eso es lo que quiero evitar.

gracias por tu aporte

El 26/03/13, Cali c <carlo...@gmail.com> escribió:

Ricardo Natella

unread,
Mar 27, 2013, 8:22:14 AM3/27/13
to mundovis...@googlegroups.com
Te mando este código de ejemplo. Suerte!

**** Importar Masivo desde Excel *******************************************
* Poner en Primera Fila los Nombres de Campo, los que se
* chequearan que coincidan en la tabla
****************************************************************************

CLEAR
xArchivo="C:\temp\ejemplo.xls"
xTabla="Planos" &&Tabla destino
IF USED("&xTabla") &&Verifica que no este en uso la tabla
SELECT("&xTabla")
USE
ENDIF
USE &xTabla IN 0

*-- Creo el objeto Excel
loExcel = CREATEOBJECT("Excel.Application")
WITH loExcel.APPLICATION
.VISIBLE = .F.
*-- Abro la planilla con datos
.Workbooks.OPEN("&xArchivo")
*-- Cantidad de columnas
lnCol = .ActiveSheet.UsedRange.COLUMNS.COUNT
*-- Cantidad de filas
* Se resta la Fila 1 donde estan los campos
lnFil = .ActiveSheet.UsedRange.ROWS.COUNT-1
*-- Recorro todas las celdas
** el Recorrido es columnas y luego filas
FOR lnJ = 2 TO lnFil
SELECT("&xTabla")
APPEND BLANK && se inserta el nuevo registro
FOR lnI = 1 TO lnCol
xCampo=.activesheet.cells(1,lnI).VALUE && Nombre del campo destino
xTipoCampo=TYPE(xCampo) && se obtiene de la tabla el tipo de campo
xValor=.activesheet.cells(lnJ,lnI).VALUE && Recupera el valor de la Celda en Excel
*? xcampo+": " && Muestra el nombre de campo
*?? xValor && Muestra el valor
DO CASE
CASE xTipoCampo="D" && si el campo es de fecha
IF ISNULL(xValor) &&Es fecha en blanco o nulo
REPLACE &xCampo WITH CTOD(" / / ") IN &xTabla
ELSE
REPLACE &xCampo WITH TTOD(xValor) IN &xTabla
ENDIF
CASE xTipoCampo="C"
IF VARTYPE(xValor)="N" && por si en excel el valor no es TEXT
REPLACE &xCampo WITH ALLTRIM(UPPER(STR(xValor))) IN &xTabla
ELSE
REPLACE &xCampo WITH xValor IN &xTabla
ENDIF
CASE xTipoCampo="N"
IF ISNULL(xValor)
REPLACE &xCampo WITH 0 IN &xTabla
ELSE
REPLACE &xCampo WITH xValor IN &xTabla
ENDIF

ENDCASE
ENDFOR
ENDFOR
*-- Cierro la planilla
.Workbooks.CLOSE
*-- Salgo de Excel
.QUIT
ENDWITH
RELEASE loExcel
SELECT("&xTabla")
BROWSE
**** Fin del Codigo

-----Mensaje original-----
De: mundovis...@googlegroups.com [mailto:mundovis...@googlegroups.com] En nombre de Edgar Barron
Enviado el: Martes, 26 de Marzo de 2013 15:16
Para: mundovis...@googlegroups.com
Asunto: Re: [Mundo Visual FoxPro] migrar un archivo de excel 2007 a dbf desde vfp usando openoffice

Ricardo Natella

unread,
Mar 27, 2013, 12:53:46 PM3/27/13
to mundovis...@googlegroups.com
Estimados: Alguien que haya desarrollado en Lianja, puede contar su experiencia sobre todo en desarrollos web?
Hay que pagar lincencias?
Es fácil la migración desde Visual FoxPro?
El hosting donde estará alojado nuestro sitio web, debe tener instalado algún software en especial?
Bueno, agradeceré (y creo que otros colegas también), algún comentario

Saludos.

Ricardo

Analyzer

unread,
Mar 27, 2013, 3:27:53 PM3/27/13
to mundovis...@googlegroups.com
Ricardo,

No he probado Lianja, pero cada uno puede descargarlo y hacer sus pruebas. Aun está en beta..



Ahora bien, el asunto de los precios por los cielos, eso no sé que estén pensando hacer los fabricantes del software.



Ricardo

Edgar Barron

unread,
Mar 30, 2013, 11:43:53 AM3/30/13
to mundovis...@googlegroups.com
Hola Ricardo Natella
Gracias, por tu ayuda, pero ya lo he estado haciendo de esta forma,
por la cantidad de registro que tiene cada archivo excel, y son muchos
archivos que procesar, me ha tomado demasiado tiempo (excel a dbf)
después lo hice abriendo cada achivo de excel en el open office y de
ahi lo grababa como dbf, una vez teniendo todos los dbf, hacia un
programa para migrar cada una de estas tablas en una tabla principal,
pero igual me tomo un tiempo,

es por eso que necesito , las instrucciones para poder trabajar con el
open office.
abrir un archivo de *.xlsx en open office y después grabar pero con el
formato a dbf.

por que si migro datos de excel a vfp directamente (me ha toma varios días)
pero *xlsx en openoffice a dbf y después cargarlo a una tabla
principal, al correr el programa lo hace rapidísimo, lo pesado es
estar abriendo archivo por archivo y grabarlo como dbf




El 27/03/13, Ricardo Natella <Ricard...@rafalim.com> escribió:

Harold Inga

unread,
Apr 1, 2013, 12:43:09 PM4/1/13
to Mundo Visual FoxPro
Use TablaDBF
Appe From &archivoxls XLS

donde: TablaDBF es una tabla tipo plantilla con la misma estructura de las columnas de tu archivo xls
          &archivoxls es uno de tus archivos en formato excel

Yo trabajo de esta forma cuando no tengo Openoffice u Office2003.
Harold Gerardo Inga Bruz
Gerente General - Sertex System S.A.C.
953522915 Movistar, 953721757 RPC, *0097178 RPM
Reply all
Reply to author
Forward
0 new messages