Hi,
Please some help and sample
How to load ALL data or PART of data from Excel file into Array (or .DBF)
Best regardsm
Hi,
Please some help and sample
How to load ALL data or PART of data from Excel file into Array (or .DBF)
Best regardsm
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 niloRange := GetExcelRange( cExcelFileName, cSheetName, { nTop, nLeft, nBottom, nRight } )
if oRange == nil
// read failed
else
aData := ArrTranspose( oRange:Value )
endif
XBROWSER aDataDBCREATE( cDbf, aStruct )
USE ( cDbf ) NEW ALIAS DST
DST->( FW_ArrayToDBF( aData ) )
CLOSE DST 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
.
.
.
NEXTHello,
I very much like Mr. Nages approach, very few lines of code and very effective.
Thank you.
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... ![]()
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!.
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:
oRange := GetExcelRange( cExcelFileName, cSheetName, { nTop, nLeft, nBottom, nRight } ) if oRange == nil 聽 聽 // read failed else 聽 聽aData := ArrTranspose( oRange:Value ) endif XBROWSER aData
oRange:WorkSheet:Parent:Close()Thanks
Perfect