Hola amigos, estoy programando en fpw26 y quiero que me ayuden por favor, necesito saber si puedo enviar datos desde una tabla .dbf a una hoja de calculo excel, con un formato predefinido, es decir, la hoja debe contener encabezados, títulos, pie de página, etc. Otra pregunta existe la manera de recuperar indices, a través de comandos, desde ya muchas gracias
1 Respuesta
Respuesta de jsam
1
1
jsam, Nombre: Arredondo Muñiz Jose Salvador Edad: 22 Años Sexo:...
Esto es un ejemplo de la interacción entre fox y excel, espero te sirva *========================================== 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").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.SABE .workbooks.CLOSE endwith RELÉ loExcel RETURN endproc *==========================================