De Visual Fox a Excel

En mis aplicaciones migro datos de Visual Fox a Excel, pero no se como se establecer el ancho de las columnas de Excel con comandos desde visual Fox

1 respuesta

Respuesta
En el siguiente ejemplo puedes ver como se maneja excel desde VFP. Espero te sirva, ahí va:
*---------------------------------
SET SAFETY OFF
*--- Crea tabla de ventas
DO CreaTabla
*--- Genera tabla dinámica
DO GenTabla
CLOSE TABLES ALL
RETURN
*---------------------------------
* PROCEDURE CreaTabla
*---------------------------------
* Crea y llena la tabla de ejemplo
* y la copia como archivo tipo .XLS
*---------------------------------
PROCEDURE
CreaTabla
LOCAL lnVend, lnZona, lnMarca, lnmodelo, lnAnio, lnCant
LOCAL laZona(3), laMarca(3), laModelo(3,4)
laZona(1) = "SUR"
laZona(2) = "NORTE"
laZona(3) = "CENTRO"
*---- Cargo las marcas y modelos
laMarca(1) = "FORD"
laMarca(2) = "FIAT"
laMarca(3) = "VOLKSWAGEN"
laModelo (1,1) = "MONDEO"
laModelo (1,2) = "FIESTA"
laModelo (1,3) = "ESCORT"
laModelo (1,4) = "FOCUS"
laModelo (2,1) = "MAREA"
laModelo (2,2) = "BRAVO"
laModelo (2,3) = "SIENA"
laModelo (2,4) = "PALIO"
laModelo (3,1) = "GOL"
laModelo (3,2) = "GOLF"
laModelo (3,3) = "PASSAT"
laModelo (3,4) = "SAVEIRO"
*--- Inicializo la funcion RAND()
lnCant = RAND(-1)
*---- Creo tabla
CREATE TABLE Ventas (Vendedor C(2), Zona C(10), ;
Marca C(10), Modelo C(10), Anio N(4), Cantidad N(4))
*--- Cargo datos ALEATORIOS
FOR lnVend = 1 TO 3
FOR lnZona = 1 TO 3
FOR lnMarca = 1 TO 3
FOR lnmodelo = 1 TO 4
FOR lnAnio = 1998 TO 2000
lnCant = INT(RAND()*9)
IF lnCant > 0
INSERT INTO Ventas ;
(Vendedor, Zona, Marca, Modelo, Anio, Cantidad) ;
VALUES ;
(TRANSFORM(lnVend, "@L 99"), laZona(lnZona), ;
laMarca(lnMarca), laModelo(lnMarca,lnModelo), ;
LnAnio, lnCant)
ENDIF
ENDFOR
ENDFOR
ENDFOR
ENDFOR
Endfor
*--- Guardo como tipo XL5
SELECT Ventas
COPY TO Ventas TYPE XL5
RETURN
ENDPROC
*---------------------------------
* PROCEDURE
GenTabla
*---------------------------------
* Crea una tabla
dinámica en Excel
*---------------------------------
PROCEDURE
GenTabla
LOCAL laPagina(2), laFilas(2), laColumnas(1), lnI, ;
lnReg, lcRango, lcArchivo, loExcel
lnReg = RECCOUNT()
lcRango="A1:F"+ALLTRIM(STR(lnReg+1)) && Rango de celdas de la
planilla
lcArchivo= SYS(5) + CURDIR() + "Ventas.xls"
*--- Arrays con los datos de la tabla dinámica
laPagina(1)="Vendedor"
laPagina(2)="Zona"
laFilas(1)="Marca"
laFilas(2)="Modelo"
laColumnas="Anio"
loExcel=CREATEOBJECT("Excel.application")
WITH loExcel.APPLICATION
.VISIBLE = .F. && oculto el trabajo en la aplicacion Excel
.workbooks.OPEN(lcArchivo)
*--- Formato datos numéricos
.Cells.SELECT
.SELECTION.COLUMNS.AutoFit
.RANGE("A1").SELECT
*--- Tabla dinámica
*--- Llamo al generador de Tablas Dinámicas
. ActiveSheet. PivotTableWizard(1, lcRango,"","MiTablaDinamica")
*--- Armo la Tabla
.ActiveSheet.PivotTables("MiTablaDinamica").AddFields(@laFilas,
@laColumnas, @laPagina)
. ActiveSheet. PivotTables("MiTablaDinamica").PivotFields("Cantidad&
quot;).ORIENTATION = 4
*--- Selecciono toda la hoja y ajusto columnas
.Cells.SELECT
.SELECTION.COLUMNS.AutoFit
.Sheets("Hoja1").NAME = "Tabla dinámica"
*--- Selecciono la celda donde queda el cursor
.RANGE("A3").SELECT
*--- Grabo planilla y cierro
.VISIBLE = .F.
.ActiveWorkbook.SAVE
.workbooks.CLOSE
ENDWITH
RELÉ loExcel
RETURN
ENDPROC
*---------------------------------

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas