Quiero decirte que tu información me ha servido para mi crecimiento de conocimientos de visual fox, el cual trabajo desde hace años. Estoy trabajando informes y los estoy exportando a excel y ya puedo darle ciertas configuraciones a la hoja de excel desde visual fox. Mi pregunta es ... ¿Podria yo hacer lo mismo con openoffice desde visual? Si tu respuesta es positiva, agradezcote me facilites algun ejemplo que tengas para poder guiarme.
1 respuesta
Respuesta de davsoft
1
1
davsoft, Desarrollador con 10 años de experiencia en el area de Visual...
Hola, estuve corriendo el ejemplo que me enviastes pero tuve varios inconvenientes; el comando comaray no lo puedo correr por que estoy en la version 5.0 de vfp y no lo tiene referenciado, comentarie eso y seguí tratando pero al correrlo dice que no reconoce la definicion de clase . mira, tengo este que me ayuda a abrir excel desde vfp, intenté reemplazar codigo y adpatarlo a scal de openoffice pero no he podido. Me puedes dar alguna luz con esta codificacion ?? procedure exporta_excel Set Safety Off Wait Window Nowait "Por favor espere, enviando datos a Excel..." lnTotal = Reccount() oExcel = Createobject("Excel.application") With oExcel .Visible = .T. oMasterWorkBook = .workbooks.Add && Add a new workbook lnMaxRows = .ActiveWorkBook.ActiveSheet.Rows.Count && Get max row count lnNeededSheets = Ceiling( lnTotal / (lnMaxRows - 1) ) && 1 row header lnCurrentSheetCount = .sheets.Count oExcel.ActiveWindow.DisplayZeros = .f. &&No muestra las celdas en valor 0 If lnNeededSheets > lnCurrentSheetCount .sheets.Add(,.sheets(lnCurrentSheetCount),lnNeededSheets - lnCurrentSheetCount) && Add new sheets after old ones Endif Endwith endproc
¿Tienes bien instalado el openOffice en la pc que estas haciendo la prueba?, ¿Y qué definición de clase no te acepta?
Hola Davsoft, encontré un codigo que me esta funcionando y te lo anexo aqui para que lo mires. Si tengo alguna duda te comento *** Here is a very similar Visual FoxPro - Open Office example that..... *** 1. Creates an OOo Calc spreadsheet *** 2. Puts some strings into it. *** 3. Puts some numbers into it. *** 4. Puts some dates into it (as formulas) *** 5. Saves it in Calc format (as C:\Example.sxw) *** 6. Saves it in Excel format (as C:\Example.xls) *** 7. Closes the document -- but this line is commented to leave the spreadsheet open in OOo *** Code: VfpOOoCalcExample() PROCEDURE VfpOOoCalcExample() * Create a spreadsheet. LOCAL oDoc oDoc = OOoOpenURL( "private:factory/scalc" ) * Get first sheet LOCAL oSheet oSheet = oDoc.getSheets().getByIndex( 0 ) *----- * Put some sales figures onto the sheet. oSheet.getCellByPosition( 0, 0 ).setString( "Month" ) oSheet.getCellByPosition( 1, 0 ).setString( "Sales" ) oSheet.getCellByPosition( 2, 0 ).setString( "End Date" ) oSheet.getCellByPosition( 0, 1 ).setString( "Jan" ) oSheet.getCellByPosition( 0, 2 ).setString( "Feb" ) oSheet.getCellByPosition( 0, 3 ).setString( "Mar" ) oSheet.getCellByPosition( 0, 4 ).setString( "Apr" ) oSheet.getCellByPosition( 0, 5 ).setString( "May" ) oSheet.getCellByPosition( 0, 6 ).setString( "Jun" ) oSheet.getCellByPosition( 0, 7 ).setString( "Jul" ) oSheet.getCellByPosition( 0, 8 ).setString( "Aug" ) oSheet.getCellByPosition( 0, 9 ).setString( "Sep" ) oSheet.getCellByPosition( 0, 10 ).setString( "Oct" ) oSheet.getCellByPosition( 0, 11 ).setString( "Nov" ) oSheet.getCellByPosition( 0, 12 ).setString( "Dec" ) oSheet.getCellByPosition( 1, 1 ).setValue( 3826.37 ) oSheet.getCellByPosition( 1, 2 ).setValue( 3504.21 ) oSheet.getCellByPosition( 1, 3 ).setValue( 2961.45 ) oSheet.getCellByPosition( 1, 4 ).setValue( 2504.12 ) oSheet.getCellByPosition( 1, 5 ).setValue( 2713.98 ) oSheet.getCellByPosition( 1, 6 ).setValue( 2448.17 ) oSheet.getCellByPosition( 1, 7 ).setValue( 1802.13 ) oSheet.getCellByPosition( 1, 8 ).setValue( 2203.22 ) oSheet.getCellByPosition( 1, 9 ).setValue( 1502.54 ) oSheet.getCellByPosition( 1, 10 ).setValue( 1207.68 ) oSheet.getCellByPosition( 1, 11 ).setValue( 1819.71 ) oSheet.getCellByPosition( 1, 12 ).setValue( 986.03 ) oSheet.getCellByPosition( 2, 1 ).setFormula( "=DATE(2004;01;31)" ) oSheet.getCellByPosition( 2, 2 ).setFormula( "=DATE(2004;02;29)" ) oSheet.getCellByPosition( 2, 3 ).setFormula( "=DATE(2004;03;31)" ) oSheet.getCellByPosition( 2, 4 ).setFormula( "=DATE(2004;04;30)" ) oSheet.getCellByPosition( 2, 5 ).setFormula( "=DATE(2004;05;31)" ) oSheet.getCellByPosition( 2, 6 ).setFormula( "=DATE(2004;06;30)" ) oSheet.getCellByPosition( 2, 7 ).setFormula( "=DATE(2004;07;31)" ) oSheet.getCellByPosition( 2, 8 ).setFormula( "=DATE(2004;08;31)" ) oSheet.getCellByPosition( 2, 9 ).setFormula( "=DATE(2004;09;30)" ) * Note that these last three dates are not set as DATE() function calls. oSheet.getCellByPosition( 2, 10 ).setFormula( "10/31/2004" ) oSheet.getCellByPosition( 2, 11 ).setFormula( "11/30/2004" ) oSheet.getCellRangeByName( "C13" ).setFormula( "12/31/2004" ) *----- * Format the date cells as dates. oFormats = oDoc.getNumberFormats() oLocale = OOoCreateStruct( "com.sun.star.lang.Locale" ) * com.sun.star.util.NumberFormat.DATE = 2 nDateKey = oFormats.getStandardFormat( 2, oLocale ) oCell = oSheet.getCellRangeByName( "C2:C13" ) oCell.NumberFormat = nDateKey LOCAL ARRAY aOneArg[1] LOCAL cFile, cURL * cFile = GetDesktopFolderPathname()+"example" cFile = "c:\example" * Now save the spreadsheet. cURL = OOoConvertToURL( cFile + ".sxw" ) aOneArg[1] = OOoMakePropertyValue( "Overwrite", .T. ) oDoc.storeToUrl( cURL, @ aOneArg ) * Now save it as Excel cURL = OOoConvertToURL( cFile + ".xls" ) aOneArg[1] = OOoMakePropertyValue( "FilterName", "MS Excel 97" ) oDoc.storeToUrl( cURL, @ aOneArg ) * Close the document. * oDoc.close( 1 ) && TRUE ENDPROC