FoxPro/Visual FoxPro - Importar de Excel a VFP

   
Vista:
Imágen de perfil de Mauricio

Importar de Excel a VFP

Publicado por Mauricio (1367 intervenciones) el 23/10/2009 15:51:59
Aclaracion para evitar criticas, esto lo pongo desde portalfox.
*
En la primera linea contiene los nombre de los campos de una tabla VFP y las siguientes los datos a importar.
La rutina modificada, lee el nombre de campo en la primera fila Y lo compara con la de la tabla existente PARA poder saber que tipo de datos es el esperado realizando las transformaciones requeridas.
**** 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\santa_maría.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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Javier

Importar de Excel a VFP

Publicado por Javier (1 intervención) el 16/10/2013 00:27:23
Hola buenas..Use el código pero no me importa los números de las notas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar