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
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