Re: Leer archivo Excel / lectura lenta
Posted: Thu Dec 26, 2019 11:07 am
As Jimmy said the Array is much quicker ....
I try to write 1000 records to dbf , used Array it can save around 30 seconds ...
aExcel:={}
nRows:=oSheet:UsedRange:Rows:Count()
nColumns:=oSheet:UsedRange:Columns:Count()
FOR i := 1 TO nRows
AADD(aExcel,ARRAY(nColumns))
NEXT
cEnde := ZAHL2CHR(nColumns)
oSheet:Range("A1:"+cEnde+LTRIM(STR(nRows))):SELECT()
aExcel := oSheet:range( "A1:"+cEnde+LTRIM(STR(nRows))):value2
nRows := 2
DO WHILE nRows <= nTotalRows
codigo := Alltrim(ConvertData(aExcel[1][nRows]))
nombre := Alltrim(ConvertData(aExcel[2][nRows]))
costo := IF(ValType(xField:=aExcel[3][nRows])=="N",xField,0)
precio := IF(ValType(xField:=aExcel[4][nRows])=="N",xField,0)
.
.
.
.
I try to write 1000 records to dbf , used Array it can save around 30 seconds ...
aExcel:={}
nRows:=oSheet:UsedRange:Rows:Count()
nColumns:=oSheet:UsedRange:Columns:Count()
FOR i := 1 TO nRows
AADD(aExcel,ARRAY(nColumns))
NEXT
cEnde := ZAHL2CHR(nColumns)
oSheet:Range("A1:"+cEnde+LTRIM(STR(nRows))):SELECT()
aExcel := oSheet:range( "A1:"+cEnde+LTRIM(STR(nRows))):value2
nRows := 2
DO WHILE nRows <= nTotalRows
codigo := Alltrim(ConvertData(aExcel[1][nRows]))
nombre := Alltrim(ConvertData(aExcel[2][nRows]))
costo := IF(ValType(xField:=aExcel[3][nRows])=="N",xField,0)
precio := IF(ValType(xField:=aExcel[4][nRows])=="N",xField,0)
.
.
.
.