FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Load FROM EXCEL
Posts: 301
Joined: Fri Jun 01, 2007 09:07 AM
Load FROM EXCEL
Posted: Tue Jan 13, 2015 12:12 PM

Hi,

Please some help and sample
How to load ALL data or PART of data from Excel file into Array (or .DBF)

Best regardsm

Posts: 23
Joined: Wed May 07, 2008 02:50 PM
Re: Load FROM EXCEL
Posted: Tue Jan 13, 2015 12:57 PM
Hi!

I have only a sample to import CSV to DBF.

Code (fw): Select all Collapse
function mkdbf()

聽 聽 if isDir( 聽".\dataimport" ) = .f.
聽 聽 聽 聽 聽lMKDir( ".\dataimport" )
聽 聽endif
聽 聽
聽 聽if file( ".\dataimport\import.csv") = .f.
聽 聽 聽 聽 聽msginfo("Import.csv fehlt" + CRLF + "Programm wird beendet")
聽 聽endif
聽 聽
聽 聽
聽 聽 if file( ".\dataimport\import.dbf") = .T.
聽 聽 聽 聽 聽ferase(".\dataimport\import.dbf")
聽 聽endif

DbCreate(".\dataimport\import",;
聽 聽 { {"F1", "C", 聽 50, 聽 0} ,;
聽 聽 聽 {"F2", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F3", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F4", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F5", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F6", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F7", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F8", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F9", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F10", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F11", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F12", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F13", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F14", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F15", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F16", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F17", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F18", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F19", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F20", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F21", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F22", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F23", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F24", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F25", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F26", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F27", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F28", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F29", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F30", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F31", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F32", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F33", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F34", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F35", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F36", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F37", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F38", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F39", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F40", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F41", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F42", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F43", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F44", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F45", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F46", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F47", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F48", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F49", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F50", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F51", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F52", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F53", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F54", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F55", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F56", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F57", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F58", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F59", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F60", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F61", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F62", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F63", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F64", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F65", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F66", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F67", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F68", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F69", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F70", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F71", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F72", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F73", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F74", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F75", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F76", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F77", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F78", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F79", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F80", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F81", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F82", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F83", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F84", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F85", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F86", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F87", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F88", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F89", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F90", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F91", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F92", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F93", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F94", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F95", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F96", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F97", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F98", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F99", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F100", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F101", "C", 聽 50, 聽 0} ,;
聽 聽 聽 {"F102", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F103", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F104", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F105", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F106", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F107", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F108", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F109", "C", 聽 50, 聽 0} ,;
聽 聽 聽 聽 {"F110", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F111", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F112", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F113", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F114", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F115", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F116", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F117", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F118", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F119", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F120", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F121", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F122", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F123", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F124", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F125", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F126", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F127", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F128", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F129", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F130", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F131", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F132", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F133", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F134", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F135", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F136", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F137", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F138", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F139", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F140", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F141", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F142", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F143", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F144", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F145", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F146", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F147", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F148", "C", 聽50, 聽 0} ,;
聽 聽 聽 聽 {"F149", "C", 聽50, 聽 0} ,;
聽 聽 聽 {"F150", "C", 聽50, 聽 0} })

use ".\dataimport\import" new ALIAS source 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 
dbzap() 聽// Delete records 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
dbpack() 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
APPEND FROM ".\dataimport\import.csv" DELIMITED WITH ( { '"', ";" } )

select source
use

return nil


Best Regards

Aljoscha
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Load FROM EXCEL
Posted: Tue Jan 13, 2015 02:10 PM
It is extremely easy to read data of an Excel Range into an array. This is just one line code.

aData := ArrTranspose( oRange:Value ) // singe statement
Where oRange is the object of the range in the excel sheet containing the data to be read.

Example:
Code (fw): Select all Collapse
oRange := GetExcelRange( cExcelFileName, cSheetName, { nTop, nLeft, nBottom, nRight } )
if oRange == nil
    // read failed
else
   aData := ArrTranspose( oRange:Value )
endif

XBROWSER aData

If we want to save aData into DBF ( assuming we have created DBF with matching structure )
Code (fw): Select all Collapse
DBCREATE( cDbf, aStruct )
USE ( cDbf ) NEW ALIAS DST
DST->( FW_ArrayToDBF( aData ) )
CLOSE DST
Regards



G. N. Rao.

Hyderabad, India
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Load FROM EXCEL
Posted: Tue Jan 13, 2015 04:03 PM
Yo leo desde Excel asi...saludos... :-)

Code (fw): Select all Collapse
   oExcel := TOleAuto():New( "Excel.Application" ) // ACTIVANDO EXCEL
   oExcel:Workbooks:Open( cFileXls ) // ABRO EL ARCHIVO SELECCIONADO
//
   oBook := oExcel:Get( "ActiveSheet" ) // ACTIVO HOJA EXCEL
   nRows := oBook:UsedRange:Rows:Count() // CANTIDAD LINEAS EXCEL INCLUYENDO LA LINEA 1 QUE ES LA CABECERA
   nCols := oBook:UsedRange:Columns:Count() // CANTIDAD COLUMNAS EXCEL

   FOR nRow = 2 TO nRows // CARGANDO DE EXCEL TABLA REPORTES
      campo :=   oBook:Cells( nRow, 1 ):Value // EL VALOR 1 ES LA COLUMNA
       .
       .
       .
   NEXT
Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Load FROM EXCEL
Posted: Tue Jan 13, 2015 04:18 PM

Hello,

I very much like Mr. Nages approach, very few lines of code and very effective.

Thank you.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: Load FROM EXCEL
Posted: Tue Jan 13, 2015 04:24 PM

Si necesitas todas las columnas, la forma de Nages es super buena si quieres todas las columnas, pero que si quieres unas columnas y otras no.? lo importante es que hay opciones para usar a gusto del consumidor, saludos... :shock:

Dios no est谩 muerto...



Gracias a mi Dios ante todo!
Posts: 1303
Joined: Tue Jul 21, 2009 08:12 AM
Re: Load FROM EXCEL
Posted: Tue Jan 13, 2015 04:57 PM

Hola,

Se puede manipular el array por ejemplo.

No iba con ning煤n prop贸sito negativo, s贸lo rese帽ar que en los 煤ltimos tiempos Mr. Nages ha venido creando una serie de funciones y clases que ahorran un mont贸n de tiempo.

Para mi, por ejemplo, TDataRow es extraordinaria en el ahorro de tiempo!.

Muchas gracias. Many thanks.



Un saludo, Best regards,



Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producci贸n]



Implementando MSVC 2010, FWH64 y ADO.



Abandonando uso xHarbour y SQLRDD.
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Load FROM EXCEL
Posted: Fri Jan 16, 2015 01:19 AM
Regards



G. N. Rao.

Hyderabad, India
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Load FROM EXCEL
Posted: Thu Apr 09, 2015 06:31 PM
nageswaragunupudi wrote:It is extremely easy to read data of an Excel Range into an array. This is just one line code.

aData := ArrTranspose( oRange:Value ) // singe statement
Where oRange is the object of the range in the excel sheet containing the data to be read.

Example:
Code (fw): Select all Collapse
oRange := GetExcelRange( cExcelFileName, cSheetName, { nTop, nLeft, nBottom, nRight } )
if oRange == nil
聽 聽 // read failed
else
聽 聽aData := ArrTranspose( oRange:Value )
endif

XBROWSER aData



Mr. Rao
I followed his example, works well
When you exit the application and open the file with excel tells me that the file is locked read-only
I tried withlOpened: = .F. andlOpened: = .T.
Excel is running
Use Win8, office 2010
The book is formatted Excel 93-2007

He seguido su ejemplo, funciona bien
Al salir de la aplicacion y abro el fichero con excel me dice que el fichero esta bloqueado solo lectura
Excel se queda ejecutando
Uso Win8, office 2010
El libro tiene formato Excel 93-2007
Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces
Posts: 10733
Joined: Sun Nov 19, 2006 05:22 AM
Re: Load FROM EXCEL
Posted: Thu Apr 09, 2015 11:16 PM
After using the oRange,
Code (fw): Select all Collapse
   oRange:WorkSheet:Parent:Close()

This closes the workbook.
Regards



G. N. Rao.

Hyderabad, India
Posts: 6755
Joined: Wed Feb 15, 2012 08:25 PM
Re: Load FROM EXCEL
Posted: Fri Apr 10, 2015 11:25 AM

Thanks
Perfect

Cristobal Navarro

Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noci贸n del tiempo

El secreto de la felicidad no est谩 en hacer lo que te gusta, sino en que te guste lo que haces

Continue the discussion