sábado, 6 de agosto de 2011

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


**--Fin del codigo



Saludos. Espero sea de utilidad. Comentarios y sugerencias para mejorar son siempre bienvenidos.

Un abrazo! Desde Managua, Nicaragua.
Ravenn! :)

1 comentario: