Вы находитесь на странице: 1из 3

Exportar tabla a Excel - VFP

Para exportar una tabla a Miscrosoft Excel, ejemplificaremos como proceder. Supongamos que tenemos la tabla productos con los campos codigo, descripcion, unidadmedida, lineaproducto. Para exportar los campos de la tabla de fox a las columnas de excel, usaremos un codigo como este: **--GENERACION A MICROSOFT EXCEL LError = ON('error') ON ERROR xlapp = NULL xlapp = GETOBJECT('Excel Application') ON ERROR &LError IF ISNULL(xlapp) **--Generamos la aplicacion xlapp = CREATEOBJECT('Excel.Application') ENDIF WITH xlapp .VISIBLE = 'True' .DisplayAlerts = 'False' .Workbooks.ADD() ENDWITH xlsheet = xlapp.ActiveSheet **--Formatos WITH xlsheet .COLUMNS("A:K").Font.Name = "MS Sans Serif" .COLUMNS("A:K").Font.Size = 9 .COLUMNS("A:A").ColumnWidth = 7.00 &&Codigo .COLUMNS("A:A").HorizontalAlignment = 3 .COLUMNS("B:B").ColumnWidth = 15.00 &&Descripcion .COLUMNS("C:C").ColumnWidth = 11.00 &&Unidad Medida .COLUMNS("C:C").HorizontalAlignment = 3 .COLUMNS("D:D").ColumnWidth = 11.00 &&Linea .COLUMNS("D:D").HorizontalAlignment = 1 ENDWITH Fila = 1 **--Titulo xlsheet.Cells(Fila,1).Value = 'Reporte de Productos' WITH xlsheet.Range("A1:A1") .Font.Bold = 'True' .HorizontalAlignment = 1 ENDWITH Fila = Fila + 2 **--Titulos de columna xlsheet.Cells(Fila,1).Value = "Codigo" xlsheet.Cells(Fila,2).Value = "Descripcion" xlsheet.Cells(Fila,3).Value = "Unidad/Medida" xlsheet.Cells(Fila,4).Value = "Linea" Fila = Fila + 1 WITH xlsheet.Range("A10:C10") .Font.Bold = 'True' ENDWITH SELECT productos **--Levantamos campos y reemplazamos en columnas de la hoja SCAN xlsheet.Cells(Fila,1).Value = productos.codigo xlsheet.Cells(Fila,2).Value = productos.descripcion xlsheet.Cells(Fila,3).Value = productos.unidaddemedida xlsheet.Cells(Fila,4).Value = productos.linea Fila = Fila + 1 ENDSCAN

****************************************************

1. use ARCHIVO.DBF copy to NUEVO.XLS xls use 2. use ARCHIVO.DBF LCCURSOR="ARCHIVO" Oexcel = CREATEOBJECT("Excel.Application") XLApp = Oexcel XLApp.workbooks.ADD() XLSheet = XLApp.ActiveSheet XLSheet.NAME='VFP_'+ALLTR(STR(lpag)) XLApp.Sheets(1).SELECT SELECT(lcursor) lcuantos=AFIELDS(lcampos,lcursor) GO TOP IN (lcursor) LOCAL R,lcampo R=6 FOR I = 1 TO lcuantos lcname=lcampos(I,1) XLSheet.Cells(4,I).VALUE=lcname NEXT XLSheet.Cells(1,1).VALUE='Demostracin de Vfp a Excel' SCAN FOR I=1 TO lcuantos lcampo=ALLTRIM(lcursor)+'.'+lcampos(I,1) IF TYPE('&lcampo')#'G' IF TYPE('&lcampo')='C' XLSheet.Cells(R,I).VALUE=ALLTRIM(&lcampo) ELSE IF TYPE('&lcampo')='T' XLSheet.Cells(R,I).VALUE=TTOC(&lcampo) ELSE XLSheet.Cells(R,I).VALUE=&lcampo ENDIF ENDIF ENDIF NEXT R=R+1 ENDSCAN Oexcel.VISIBLE=.T. use 3. FoxyPreviewer. **************************************************************************

habia hecho la misma pregunta y me respondio luis mata con el siguiente codigo y funsiona : SET PROCEDURE TO LOCFILE("FoxyPreviewer.App") ADDITIVE LOCAL loReport as "PreviewHelper" OF "FoxyPreviewer.App" loReport = CREATEOBJECT("PreviewHelper") WITH loReport as ReportHelper .AddReport("&lcreport","NODIALOG") *.cDestFile = "c:\&lcreport" &&"c:\Teste1.xls" && Use to create an output without previewing .cDestFile = "c:\Teste1.xls" && Use to create an output without previewing .RunReport() ENDWITH loReport = NULL *RUN /N Explorer.Exe c:\Teste1.pdf gracias por su atencion

Yo por lo general (y dependiendo del caso) hago lo siguiente: Create Cursor CUR_CLIENTES(CODIGO N(5), APELLIDO C(30), NOMBRES C(30), SALDO N(10,2)) Select CLIENTES Go Top Scan While Not Eof() Scatter Memvar Select CUR_CLIENTES Append Blank Replace CODIGO With M.CLI_COD Replace APELLIDO With M.CLI_APE Replace NOMBRES With M.CLI_NOM Replace SALDO With M.CLI_SAL Select CLIENTES EndScan Select CUR_CLIENTES Sum SALDO to _TOTAL Append Blank Replace SALDO With _TOTAL Go Top Report Form REPORTE_CLIENTES Preview Copy To CLIENTES Type XLS Release CUR_CLIENTES Esto te genera en el Disco un archivo llamado CLIENTES.XLS que se puede abrir desde Excel. El hecho que uso un cursor temporal es porque en cada columna del archivo excel pone: CDIGO, APELLIDO, NOMBRES Y DOMICILIO. Si usara la tabla CLIENTES, pondra en cada columna del archivo excel: CLI_COD, CLI_APE, CLI_NOM y CLI_DOM (que son nombres no muy entendibles para el usuario de Excel). El inconveniente es que no puedes enviar al archivo excel la cabecera del reporte (Titulo, Pgina, Fecha, etc) Existen utilitarios tales como Crystal Report que te permite generar reportes en base a una tabla Visual y luego exportarlos a Excel... pero ese es otro tema mucho ms extenso.

Вам также может понравиться