Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Export data to Excel
Message
De
08/05/2001 14:30:35
 
 
À
08/05/2001 13:45:44
Cindy Winegarden
Duke University Medical Center
Durham, Caroline du Nord, États-Unis
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00504835
Message ID:
00504921
Vues:
20
Cindy, here is what I found out via some testing of my own. I created
a 6 column cursor containing 65,000 rows of data (near the Excel 64K limit).

I then wanted to see how long it would take for the various copy methods
to work. Here are the results:

1.) COPY TO ... TYPE XLS - 10.813 seconds but only 16,383 rows copied.
I did this to show that VFP does not report an error when reaching
the 16,383 limit.


2.) Application.DataToClip(,,3) - 54.422 seconds.

3.) COPY TO filename DELIMITED WITH TAB then
_CLIPTEXT = FILETOSTR(filename) - 37.172 seconds.

Options 1 and 2 take about the same time with less than 20K rows.

It is interesting that option 3 with two VFP commands is indeed faster than the single DataToClip()...



>Wow - interesting to know. I guess I'll have to do some time trials!
>
>I do a lot of ad hoc reportig and use DataToClip() as a one-time thing, but if you're programming it makes sense to do it the most efficient way.
>
>To others reading, you may want to add
>IF FILE([FileName])
>    ERASE FileName
>ENDIF
>
>
>
>>Believe it or not, but the following is actually faster than DataToClip()
>>especially for a large number of rows:
>>
>>
>>COPY TO filename DELIMITED WITH TAB
>>_CLIPTEXT = FILETOSTR(filename)
>>oExcel.ActiveSheet.Paste()
>>_CLIPTEXT = “” && clear out the clipboard
>>
>>
>>>Automation will do it, but I think the limit then is 64K. After that you will need additional sheets or workbooks.
>>>
>>>A fast way is to select an amount of data and then use
>>>_VFP.DataToClip( , , 3)
>>>oExcel.Paste()
>>>
>>>This makes an array, and you are limited by the max size of an array so if you have a lot of columns you will need to paste fewer rows at a time.
>>>
>>>Another method is to COPY TO with a small piece at a time and Workbooks.Add() each piece.
>>>
>>>A third way is to copy to a DBF and automate opening that and saving as an XLS.
>>>
>>>>HI,
>>>>I have queries that may contain 100-500k of rows. I want to export them in Excel. I tried COPY TO...TYPE XL5. It only copy 16383 rows. I know that Excel is able to hold more than that. Is there another solution for it ? Ole automation surely ?
>>>>
>>>>Thank you,
>>>>Christian Cote
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform