Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Report Output To Excel.... Is this possible? If so best
Message
De
08/01/2001 00:24:38
 
 
À
06/01/2001 21:54:09
Information générale
Forum:
Visual FoxPro
Catégorie:
Gestionnaire de rapports & Rapports
Divers
Thread ID:
00459677
Message ID:
00460403
Vues:
16
>>>Look at Application.DataToClip() to copy VFP table/cursor data to the
>>>windows clipboard and then paste it into Excel. You are not constrained
>>>to the 16K limit like COPY TO XLS. Another benefit to this
>>>approach is that you can have a preformatted Excel spreadsheet template
>>>and simply drop the data into it and save as another name. Here is an
>>>example of that technique:
>>>
>>>oExcel = CREATEOBJECT('Excel.Application')
>>>
>>>*-- Open the preformatted Excel template file
>>>oExcel.WorkBooks.Open(cExcelTemplateFile) && This is read only
>>>
>>>GO TOP IN vfp_cursor
>>>*-- Copy tab delimited list of table values to windows clipboard
>>>Application.DataToClip('vfp_cursor', RECCOUNT('vfp_cursor'), 3)
>>>
>>>WITH oExcel
>>>*-- Select the proper sheet
>>>.Sheets('sheetname').Select()
>>>*-- Position the cursor
>>>.Selection.Range("A6").Select()
>>>*-- Paste the contents of the clipboard
>>>.ActiveSheet.Paste()
>>>
>>>*-- Get rid of the table column names
>>>.Rows("6:6").Select()
>>>.Selection.ClearContents()
>>>.Range("A1").Select()
>>>
>>>.DisplayAlerts = .F.
>>>*-- Save file under a new name hence preserving the template for future use
>>>.ActiveWorkBook.SaveAs(cDirAndFileName)
>>>.Quit()
>>>ENDWITH
>>>
>>>oExcel = .NULL.
>>>RELEASE oExcel
>>>
>>
>>Does the paste method still have problems dealing with .NULL. values? Is the paste method still limited in total size (used to be around 5K bytes???). I've not tried much pasting into Excel lately, so I'm not sure.
>
>NULLs are still a problem but are correctable by doing an NVL() when selecting the data. There is a serious size and speed limit on the ClipBoard, but I'm not sure of the exact size; it's tied to available virtual memory space - I just stuff 3.5MB/45K recs in from VFP and pasted it into an Excel Spreadsheet (Win2K Pro SP1 256MB, VFP 6 SP4, Excel 2K SP1, jRandomOtherStuff running.) It took measurable time, but lots less than stuffing each cell one by one via automation would require.

Thanks, Ed. I've not had a reason to try it out lately, and the app with the segment pasting has been working fine, so if it works, don't .... with it!

I might try upping the segment size since all the WorkStations involved now have 256MB memory in them. (used to be 64 MB)

>
>>
>>The NULL problem was a real bear, and the limited size could be dealt with in a loop. But the net result was *way* faster then trying to automate filling the cells of a sheet one by one, that's for sure.
Fred
Microsoft Visual FoxPro MVP

foxcentral.net
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform