Conversion de un XLSX a un DBF ó CSV desde VFP9

4,330 views
Skip to first unread message

Samuel San Miguel Hernández

unread,
Aug 9, 2012, 2:45:13 PM8/9/12
to publice...@googlegroups.com
Hola FORO;
Necesito poder realizar la Conversion de un XLSX a un DBF ó CSV desde VFP9; para luego esto ser cargado en un cursor y poder trabajar con esos datos.

Ya que eh probado levantarlo con APPEND FROM (ARCHIVO.Xlxs) TYPE XLS ó XL5 y no me funciona.
Por tanto tengo que decirle al usuario que manualmente lo abrá y lo guarde con otro formato para recien levantarlo.!Esto quiero evitar!!

Gracias por la ayuda.
Se aceptan sugerencias.

Saludos

Ricardo Pina

unread,
Aug 9, 2012, 2:52:31 PM8/9/12
to publice...@googlegroups.com
Hola Samuel
 
Lo puedes hacer por automaciòn
Lo abres y lo guardas con el formato anterior y lo sigues importando con el APPEND FFROM o lo trabajas todo por automaciòn
 
Saludos


--
 
 
 



--
            

                   Ricardo Pina

Desarrollo y Servicios Informáticos

                  Profesionales
               www.dsip.com.ar

 

 


Samuel San Miguel Hernández

unread,
Aug 9, 2012, 4:37:19 PM8/9/12
to publice...@googlegroups.com
Hola Ricardo, se puede abrir un documento de excel Xlsx y renombrarlo con otro tipo Xls ó Csv??, como?
Gracias

Samuel San Miguel Hernández

unread,
Aug 9, 2012, 4:38:09 PM8/9/12
to publice...@googlegroups.com
Hola Ricardo, se puede abrir un documento de excel Xlsx y renombrarlo con otro tipo Xls ó Csv??, como?
Obviamente haciendolo desde VFP 9.0
Gracias

Ricardo Pina

unread,
Aug 9, 2012, 4:55:43 PM8/9/12
to publice...@googlegroups.com
Hola
 
Prueba con este còdigo
 
*-Abrir
oExcel = CreateObject("Excel.Application")
oWorkbook = oExcel.Application.Workbooks.Open("C:\temp\archivo.xlsx")
 
*- Guardar
if val(oExcel.Version) > 11
    oWorkbook.SaveAs("C:\temp\archivo.xls", 56) && Version 2003 o ant.
else
    oWorkbook.SaveAs("C:\temp\archivo.xls")
endif
 
En el equipo tiene que estar instalado el Excel 2007/10
No tengo instalado esas versiones pero si no desmiente algùn Gurù del grupo creo que no tendrias que tener problemas.
 
Saludos

El 9 de agosto de 2012 17:38, Samuel San Miguel Hernández <ssanmigue...@gmail.com> escribió:
Hola Ricardo, se puede abrir un documento de excel Xlsx y renombrarlo con otro tipo Xls ó Csv??, como?
Obviamente haciendolo desde VFP 9.0
Gracias

El jueves, 9 de agosto de 2012 15:37:19 UTC-5, Samuel San Miguel Hernández escribió:
Hola Ricardo, se puede abrir un documento de excel Xlsx y renombrarlo con otro tipo Xls ó Csv??, como?
Gracias

El jueves, 9 de agosto de 2012 13:45:13 UTC-5, Samuel San Miguel Hernández escribió:
Hola FORO;
Necesito poder realizar la Conversion de un XLSX a un DBF ó CSV desde VFP9; para luego esto ser cargado en un cursor y poder trabajar con esos datos.

Ya que eh probado levantarlo con APPEND FROM (ARCHIVO.Xlxs) TYPE XLS ó XL5 y no me funciona.
Por tanto tengo que decirle al usuario que manualmente lo abrá y lo guarde con otro formato para recien levantarlo.!Esto quiero evitar!!

Gracias por la ayuda.
Se aceptan sugerencias.

Saludos

--
 
 
 

Antonio.xt

unread,
Aug 9, 2012, 5:00:50 PM8/9/12
to publice...@googlegroups.com

Ya probaste con el formato CSV ?

Guardar la hoja en formato CSV (Texto separado por comas), y luego desde VFP creas un cursor con la misma estructura y haces un APPEND FROM {Archivo.CSV} TYPE CSV

Saludos...


El jueves, 9 de agosto de 2012 13:45:13 UTC-5, Samuel San Miguel Hernández escribió:

Samuel San Miguel Hernández

unread,
Aug 10, 2012, 2:28:42 AM8/10/12
to publice...@googlegroups.com

Muchas gracias, Carlos y Ricardo
Buenas prácticas de como manejar al subir archivos de excel (cualquier tipo).

Me quedó bien!!!

Saludos.

El jueves, 9 de agosto de 2012 18:21:39 UTC-5, CAC Grupo Centrosoft - Carlos A. Coronel - Cúcuta /Colombia escribió:
hola, este codigo lo uso en 2007 y sin problemas... lo saque de portalfox hace como un año, espero te sirva... saludos

Local lcXLBook As String, lnSQLHand As Integer, ;
lcSQLCmd As String, lnSuccess As Integer, ;
lcConnstr As String
lcXLBook=thisform.text1.value
*lcXLBook = Getfile('xls, xlsx, xlsm, xlsb', 'Archivo:', 'Aceptar', 0, 'Seleccione una hoja de cálculo')
If Empty(lcXLBook)
Return .F.
Endif

If !File(lcXLBook)
Messagebox("Archivo no encontrado", 16)
Return .F.
Endif

Local oExcel As Excel.Application
m.oExcel = Createobject("Excel.application")

If Vartype(oExcel,.T.)!='O'
Messagebox("No se puede procesar el archivo porque no tiene la aplicación" ;
+ Chr(13) + "Microsoft Excel instalada en su computador.", 16)
m.oExcel = Null
Release oExcel
Return .F.
Endif

m.oExcel.Workbooks.Open(m.lcXLBook)
m.oExcel.Sheets(1).Select

Local oSheet As Object, lcSheet As String
m.oSheet = m.oExcel.ActiveSheet
m.lcSheet = m.oSheet.Name

m.oExcel.Quit()
m.oExcel = Null
Release oSheet, oExcel

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

lcSQLCmd = [Select * FROM "] + m.lcSheet + [$"]
lnSuccess = SQLExec( lnSQLHand, lcSQLCmd, [xlResults] )

If lnSuccess < 0
Local Array laErr[1]
Aerror( laErr ) 
Messagebox(laErr(3), 16)
SQLDisconnect( lnSQLHand )
Return .F.
Endif

Select xlResults
COPY TO resultados.dbf
SQLDisconnect(lnSQLHand)



Yeimmy Eliana Ortiz Saenz

unread,
Aug 10, 2012, 11:11:01 AM8/10/12
to publice...@googlegroups.com
Hola desde Fox no se puede hacer para que la aplicacion lo reconosca debe abril su archivo XLSX y guardar como "Libro de Microsoft Excel 5.0/95" y luego lo sube a la apliacion de Fox.
 
Para los CSV debe importarlos desde la linea de codigo sin extension asi:
 
warchivo = getfile("")
if !empty(warchivo) then 
 APPEND FROM &warchivo DELIMITED WITH CHARACTER ,
 
Espero le sirva compañeros.
 
Yeos

--
 
 
 

Mario Oviedo

unread,
Aug 28, 2012, 4:50:59 PM8/28/12
to publice...@googlegroups.com
CAC
si que soy ignorante, que hace ese codigo
o que referencia debe de tener un archivo
para utilizar este codigo de CAC

y que significa esto de la señorita
Hola desde Fox no se puede hacer para que la aplicacion lo reconosca debe abril su archivo XLSX y guardar como "Libro de Microsoft Excel 5.0/95" y luego lo sube a la apliacion de Fox. 



--
 
 
 

Luis Mata

unread,
Aug 28, 2012, 6:12:25 PM8/28/12
to publice...@googlegroups.com
Prueba esto:
 
arnuevo = getfile('xls,xlsx')
if arnuevo==''
    RETURN .f.
ELSE
nchar = LEN(arnuevo)
vaqui = 0
FOR e=1 TO nchar
    IF SUBSTR(arnuevo,e,1)=='\'
        vaqui = e
    endif
NEXT e
mileft = LEN(LEFT(arnuevo,vaqui))
milen = LEN(arnuevo)
mifilealt = SUBSTR(arnuevo,mileft+1,(milen-(mileft+1))-3)
*--abriendo el archivo xlsx
LOCAL lcXLBook AS STRING, lnSQLHand AS INTEGER, ;
lcSQLCmd AS STRING, lnSuccess AS INTEGER, ;
lcConnstr AS STRING
lcXLBook = arnuevo
mierrorx  = 0
    lcConnstr = [Driver=] + ;
        [{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] + ;
        [DBQ=] + lcXLBook
   
    IF !FILE( lcXLBook )
        MESSAGEBOX ([Archivo excel no encontrado],31,"Archivo no encontrado")
        RETURN .f.
    ENDIF       
    lnSQLHand = SQLSTRINGCONNECT( lcConnstr )
    IF lnSQLHand < 0
        MESSAGEBOX("Error de Conexión , Verifique.",48,"Error")
        RETURN .f.
    ENDIF
    lcSQLCmd = 'Select * FROM "'+mifilealt+'$"'
    lnSuccess = SQLEXEC( lnSQLHand, lcSQLCmd, [xlResults] )
    IF lnSuccess < 0
        SQLDISCONNECT( lnSQLHand )
        MESSAGEBOX("No se pudo importar el Archivo Verifique que el nombre del archivo sea igual al nombre de la hoja a importar.",48,"Erro al Intentar importar.")
        RETURN .f.
    ENDIF
    SQLDISCONNECT( lnSQLHand )
endif
SELECT xlResults
 
Ojo: el nombre del archivo debe de ser igual nombre de la hoja y antes instala este driver: http://www.microsoft.com/en-us/download/details.aspx?id=13255
--
 
 
 

J. Enrique Ramos Menchaca

unread,
Aug 28, 2012, 8:37:57 PM8/28/12
to publice...@googlegroups.com
Yo utilizo SAVEDBF, pero sería bueno que le heches un vistazo.



El jueves, 9 de agosto de 2012 13:45:13 UTC-5, Samuel San Miguel Hernández escribió:

CAC Grupo Centrosoft - Carlos A. Coronel - Cúcuta /Colombia

unread,
Aug 9, 2012, 7:21:39 PM8/9/12
to publice...@googlegroups.com
Reply all
Reply to author
Forward
0 new messages