Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Advice on speeding up sending data to Excel
Message
From
18/06/1997 09:10:11
 
 
To
18/06/1997 04:01:23
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00036697
Message ID:
00036763
Views:
72
>>In my application I use the following code to create an Excel spreadsheet and populate it with the contents of an array that was created with a SQL Select into statement. Sometimes the array is large, over a 1000 records, and this process can be lengthy (5-10 minutes). Any advice on how to speed this up?
>>
>>Wait Window "Creating Excel Spreadsheet..." nowait
>>tmpSheet = GetObject('','excel.sheet')
>>XLApp = tmpsheet.application
>>XLApp.WorkBooks.Add()
>>XLSheet = XLApp.ActiveSheet
>>XLSheet.Cells(1,1).Value = "Soc_Sec_Num"
>>XLSheet.Cells(1,2).Value = "Employee_Name"
>>XLSheet.Cells(1,3).Value = "Ded_Code"
>>XLSheet.Cells(1,4).Value = "ER"
>>XLSheet.Cells(1,5).Value = "UDDS"
>>XLSheet.Cells(1,6).Value = "Fund"
>>XLSheet.Cells(1,7).Value = "Act"
>>XLSheet.Cells(1,8).Value = "Acct"
>>FOR i = 1 to _tally
>> j = i + 1
>> XLSheet.Cells(j,1).Value = customized(i,1)
>> XLSheet.Cells(j,2).Value = customized(i,2)
>> XLSheet.Cells(j,3).Value = customized(i,3)
>> XLSheet.Cells(j,4).Value = customized(i,4)
>> XLSheet.Cells(j,5).Value = customized(i,5)
>> XLSheet.Cells(j,6).Value = customized(i,6)
>> XLSheet.Cells(j,7).Value = customized(i,7)
>> XLSheet.Cells(j,8).Value = customized(i,8)
>>ENDFOR
>>XLApp.ActiveWindow.WindowState = 2
>>XLSheet.Cells.Select
>>XLSheet.Cells.EntireColumn.AutoFit
>>XLSheet.Range("A1").Select
>>Wait Window "Excel Spreadsheet Complete!" nowait
>>RELEASE tmpSheet
>>XLApp.Visible = .t.
>
>Hello Jeff,
>
>I have the same problem here in an app where a generic option offers download and/or uploads from Excel.
>
>Fine but as you discovered ... pumping VFP variables into Excel thru
>OLE automation is awfull time-consuming.
>
>I tried different solutions but never was able to speed up the process :
>
> XLSheet.Cells(i,j) = aVFPvar
>
>As as i a am concerned the current workaround is :
>
> 1- create a temp DBF cursor,
> 2- COPY TO myworksheet.xls TYPE XL5
> 3- open the temp.xls within EXCEL
> 4- do the cosmetics (autofit,font,...)
> 5- save it
>
>As it is a destructive process that can potentially destroy sophisticated multi-sheets documents i also offer a more time-consuming refresh option that sends Excel tons of :
>
> XLSheet.Cells(i,j) = aVFPvar
>
>If anyone has a better workararound i'd be glad to read. I alas don't think it is possible to "feed" Excel cells ranges with VFP array.
>
>François

It might be irrelevant, but this is 'old Indian' Excel VBA tip:
There is Calculation property which should be reset (to speed up the process) when you upload data into existing Excel app:
Application.Calculation = xlManual && to prevent interim Excel calculations
*** upload data here
Application.Calculation = xlAutomatic
Application.Calculate && now whole spreadsheet will be recalculated once
Edward Pikman
Independent Consultant
Previous
Reply
Map
View

Click here to load this message in the networking platform