exportar y formatear excel

1,902 views
Skip to first unread message

Ariel

unread,
Oct 12, 2012, 2:31:17 PM10/12/12
to publice...@googlegroups.com
hola compañeros, alguien tendra un prg. o ejemplos para enviar una tabla a excel y calc (open office) y formatear el mismo para que quede bonito, osea, con bordes, totales, etc..
Quiero hacer una clase que tome un cursor y la pase a excel u openoffice, depende de que tienen instalado, tambien que se pueda enviar por mail el archivo, o guardar en el disco.
si lo logro hacer sera compartido con la comunidad.

Desde ya muchas gracias

Ariel D'Alfeo
Córdoba, Argentina

Fox Learner

unread,
Oct 12, 2012, 2:40:39 PM10/12/12
to publice...@googlegroups.com
Por favor revisa este artículo de Portal Fox. Talvez te sirva para tomar algunas ideas.


Saludos!

Luis Maria Guayan

unread,
Oct 12, 2012, 2:43:30 PM10/12/12
to publice...@googlegroups.com
Intenta con FoxyPreviewer que desde una reporte lo puedes pasar a Excel, PDF o archivo gráfico y lo puedes enviar por correo electrónico.

-- FoxyPreviewer --

http://foxypreviewer.codeplex.com

Luis María Guayán
Tucumán, Argentina
_________________________
http://www.PortalFox.com
Nada corre como un zorro
_________________________

--
 
 
 

Walter R. Ojeda Valiente

unread,
Oct 12, 2012, 2:59:08 PM10/12/12
to publice...@googlegroups.com
Hasta ahora nunca tuve necesidad de enviar a Open Office, ninguno de mis clientes lo usa (al menos que yo sepa), todos usan Excel así que es el que utilizo yo también.

Cuando deseo automatizar Excel lo que hago es lo siguiente:
1. Envío todos los datos que posteriormente irán a la planilla Excel a un archivo de texto
2. En cada fila de ese archivo de texto están los datos correspondientes a una celda de Excel
3. Hay una función que lee el contenido de ese archivo de texto y crea la planilla Excel correspondiente

¿Por qué hago así?

Porque eso me da total control sobre lo que deseo mostrar: celda, tipo de letra, tamaño de letra, color, formato, bordes, tramados, etc.

Además, puedo mostrarles un mensaje a los usuarios (o sea un WAIT WINDOW .... NOWAIT) con el porcentaje que ya se ha completado de la operación, algo como: "Se ha completado el 72,56% de la planilla Excel"

Te copio a continuación la función CELDAEXCEL(), la cual se encarga de grabar en el archivo de texto el contenido que tendrá la celda especificada.

FUNCTION CeldaExcel
LParameters tnFP, tnFila, tnColumna, tuDato, tcTipoDato, tuFormatoCelda, tcPicTot
Local lnResultado
 
  tcPicTot = iif(VarType(tcPicTot) <> "C", "999,999,999,999", tcPicTot)
 
  tuDato = iif(VarType(tuDato) == "N", Transform(tuDato, tcPicTot), tuDato)
  tuDato = iif(VarType(tuDato) == "D", DtoC(tuDato), tuDato)
 
  tcTipoDato = Upper(tcTipoDato)
 
  tuFormatoCelda = iif(VarType(tuFormatoCelda) <> "C", "", tuFormatoCelda)
 
*  Formato Celda
*  ------------- 
*  FN = FontName (Arial, Courier New, etc.)
*  FS = FontSize (8, 10, 12, etc.)
*  FB = FontBold (.F., .T.)
*  HA = HorizontalAlignment (1 = General, 2 = Izquierda, 3 = Centrar, 4 = Derecha)
*  NF = NumberFormat ("#,##0.00_)", "m/d/yy", "$#,##0.00_);[Rojo]($#,##0.00)")
*  CI = .Interior.ColorIndex (1 = , 2= )
*  PA = .Interior.Pattern (1 = Sólido, ...)
 
  lnResultado = FPutS(tnFP, Str(tnFila) + "|" + Str(tnColumna, 20) + "|" + tuDato + "|" + tcTipoDato + "|" + tuFormatoCelda)
 
Return(lnResultado)
*
*

Saludos.

Walter.





Date: Fri, 12 Oct 2012 11:31:17 -0700
From: ariel...@gmail.com
To: publice...@googlegroups.com
Subject: [vfp] exportar y formatear excel
--
 
 
 

Alejandro P

unread,
Oct 12, 2012, 3:01:53 PM10/12/12
to publice...@googlegroups.com
y yo utilice de este articulo para hacer a Open Office


el ejemplo es bastante bueno desgraciadamente no hay mucha documentacion para poner bordes y esas cosas para hacerlo mas vistoso

--
 
 
 

Ariel D'Alfeo

unread,
Oct 12, 2012, 3:43:48 PM10/12/12
to publice...@googlegroups.com
El FoxyPreviewer esta muy bueno lo implemente en mi sistema, pero lo saque después de unas semanas porque el problema son los usuarios que se ahogan en un vaso de agua, y al ver tantas opciones.. en vez de alegrarse, se fastidian. y se empiezan a quejar, de que tarda mucho que no lo entienden, etc. ES PARA MATARLOS!!!!, pero antes de cometer un asesinato volvi al básico.
Hay alguna forma de que al implementar FoxyPreviewer yo pueda decidir cuales serán los reportes que tengan las opciones "comunes" y cuales serán avanzados?, porque cuando lo implemente, lo puse para un reporte, pero después  cada vez que llamaba un reporte me abría el foxyprev.
Si lo pudiera separar podría poner dos botones "impresión Basica", "impresión avanzada"


Ariel D'Alfeo
--
 
 
 

Alejandro P

unread,
Oct 12, 2012, 3:50:25 PM10/12/12
to publice...@googlegroups.com
En donde estoy todo era felicidad hasta que quisieron renovar licencias de los Excel y resulta que es demasiado caro, por eso optaron por trabajar por el open office.

Ahora que estuve en esa situacion se porque Bill Gato tiene tantos millones, cobra hasta por respirar en el software ( filosofia que si aplicaramos todos seriamos igual de millonarios ).

Y tambien volvi a descubrir dos cosas

1) Portal Fox te salva de todas, todas
2) Visual Foxpro es la herramienta mas noble que hay y duele tener que dejarlo 

saludos!

Walter R. Ojeda Valiente

unread,
Oct 12, 2012, 3:51:16 PM10/12/12
to publice...@googlegroups.com
Hola Ariel

Yo lo he implementado de esta forma:
- Tengo un botón que le permite al usuario elegir si desea imprimir el informe "normal" o el informe "mejorado" (o sea, usando FoxyPreviewer)
- En el evento INTERACTIVECHANGE() de ese botón escribí:

Local lnPresenta
 
  lnPresenta = This.Value
 
  if lnPresenta == 1     && Normal
    SET REPORTBEHAVIOR 80
  else                   && Mejorada
    SET REPORTBEHAVIOR 90
  endif
 
Return
*
*

Es así de fácil. Por defecto el botón muestra "Normal" ya que es un poco más rápido, pero le permito al usuario cambiar la presentación cuando lo desee. Nadie se queja y todos felices :-)

Saludos.

Walter.





Date: Fri, 12 Oct 2012 16:43:48 -0300
From: ariel...@gmail.com
To: publice...@googlegroups.com
Subject: Re: [vfp] exportar y formatear excel
--
 
 
 

Ariel D'Alfeo

unread,
Oct 12, 2012, 3:56:09 PM10/12/12
to publice...@googlegroups.com
muy buena la idea, lo voy a probar.

Gracias!

Ariel D'Alfeo
--
 
 
 

Ariel D'Alfeo

unread,
Oct 13, 2012, 9:52:37 PM10/13/12
to publice...@googlegroups.com
Gracias Walter ! era mas fácil de lo que pensaba! lo voy a implementar.


Ariel D'Alfeo
--
 
 
 

HernanCano

unread,
Oct 14, 2012, 2:49:03 AM10/14/12
to publice...@googlegroups.com
Ariel:
Sí, hay usuarios que se ahogan en un vaso de agua... COMO TU!! Parece que viste muchas opciones y te fastidiaste.

Si leyeras bien la doc, verías que para desactivar FoxyPreviewer 'temporalmente' se usa
do FoxyPreviewer with "RELEASE"

Es decir.... para un reporte ya cargaste FoxyPreviewer; si no lo quieres para otro, usas do FoxyPreviewer with "RELEASE" o también SET REPORTBEHAVIOR 80 (ésto último te lo menciona Walter).

¿Bien?

Walter R. Ojeda Valiente

unread,
Oct 14, 2012, 11:27:43 PM10/14/12
to publice...@googlegroups.com
Hola Ariel

Error de dedo, no se trata de un "botón" sino de un "combobox", habré estado medio dormido cuando escribí eso, pero veo que entendiste la idea, así que todo bien.

Saludos.

Walter.





Date: Sat, 13 Oct 2012 22:52:37 -0300
--
 
 
 

Ariel D'Alfeo

unread,
Oct 15, 2012, 9:35:55 AM10/15/12
to publice...@googlegroups.com
Si se entendió a la perfección!, y funciona a la perfección!

Gracias!
Ariel
--
 
 
 

Jairo Miranda

unread,
Oct 15, 2012, 3:13:00 PM10/15/12
to publice...@googlegroups.com

Walter, este punto me interesa ya que existe aun una aplicación en modo dos y los clientes desean tener su factura en Excel , el programa (Dataflex 3.0) genera una archivo plano separado por comas , lo que hago es llevarlo directamente a Excel y maquillarlo. La Idea..  llevarlo a fox y con el programa de exportar un  cursor a Excel usando el programa de l portalfox “EXP2Excel” que usa la técnica de exportación de  datos en modo texto . el asunto que es que uso el IMPORT  de fox para crear el cursor temporal de forma manual.

 

  Seria:

 

Get file al archivo texto

Escribir el nombre del archivo destino xls

Dar click al botón de proceso

Habre execl y se le aplica un autoformato

 

IDEAS??????

JM

--
 
 
 

Walter R. Ojeda Valiente

unread,
Oct 15, 2012, 3:52:38 PM10/15/12
to publice...@googlegroups.com
Jairo, la forma más sencilla es crear un informe y luego exportarlo a Excel con FoxyPreviewer, pero a veces quieres "personalizar" o "mejorar" la presentación de la planilla (con colores, bordes, tramados, etc.) y para esos casos lo más adecuado es la automatización.

Para tener un control 100% sobre la planilla Excel que genero hice dos funciones:
1. Que guarda en cada fila de un archivo de texto las características y el contenido de cada celda
2. Que lee ese archivo de texto y crea una planilla Excel de acuerdo a los datos contenidos en cada fila

Desde luego que hay otras maneras de lidiar con este problema pero mi solución me gusta porque me da un control total sobre Excel y además le puedo mostrar un mensaje al usuario de la forma: "Se ha generado el 65.78% de la planilla Excel", así el fulano sabe que el programa está trabajando.

Quizás aún mejor sería crear una clase que realice esa tarea, voy a hacerme de un poco de tiempo para ello y luego la publicaré para que esté disponible para los interesados.

Saludos.

Walter.





From: sandrae...@gmail.com
To: publice...@googlegroups.com
Subject: RE: [vfp] exportar y formatear excel
Date: Mon, 15 Oct 2012 14:13:00 -0500
--
 
 
 
Reply all
Reply to author
Forward
0 new messages