generar excel con extension xlsx desde visual fox pro

457 views
Skip to first unread message

Jorge

unread,
Oct 14, 2022, 4:57:14 PM10/14/22
to publicesvfoxpro
Hola :
 Necesito generar una planilla excel desde visual fox con extension xlsx como la que adjunto a la consulta .
la misma tiene una serie de registros que los obtengo desde un cursor 
y el encabezado que contiene imagenes , combinacion de celdas .
DEsde ya que estos requisitos no los puedo cumplir  usando el comando export .
Alguno me puede dar algun ejemplo de como  puedo encarar la tarea partiendo de un informe frx y de ahi exportandolo a excel ?

desde ya muchas gracias
MODELO AREF ULTIMO.xlsx

jorge.ma...@gmail.com

unread,
Oct 14, 2022, 5:47:45 PM10/14/22
to publice...@googlegroups.com

Estimado

 

#define xlThemeColorDark2   3

#define xlEdgeLeft                 7

#define xlEdgeTop                  8

#define xlEdgeBottom          9

#define xlEdgeRight           10

#define xlThemeColorAccent2 6

#define xlThemeColorAccent1 5

#define xlThemeColorAccent5 9

#define xlRight               -4152

#define xlDiagonalUp          6

#define xlDiagonalDown        5

#define xlThin                     2

#define xlCenter                   -4108

#define xlBottom                   -4107

#define xlContext                  -5002

#define xlSolid                     1

#define xlAutomatic                -4105

#define xlThemeColorDark1     1

#define xlNone                     -4142

#define xlContinuous          1

#define xlInsideVertical      11

#define xlInsideHorizontal  12

#define xlGeneral                  1

#define xlToRight                  -4161

 

WAIT WINDOW NOWAIT 'Exportando...a Excel'

 

SET DATe BRITISH

 

LOCAL nFila as Number

 

SELECT almacen

GO top

 

nFila=6

 

** PREPARO UNA NUEVA SESION DE EXCEL:

Excel1 = CREATEOBJECT("Excel.Application")

 

** la siguiente liena si esta .t. permite ver como se va llenando la hoja en excel mientras trabaja

Excel1.VISIBLE = .T.   

 

** PREPARO UN NUEVO TRABAJO DE EXCEL

Excel1.Workbooks.ADD   

 

** titulos para las columnas 1,2,3,4,5 siempre en la fila 1

Excel1.Range("A1").Select

Excel1.ActiveSheet.Pictures.Insert("C:\agnova\Graphics\logo_nova_excel.jpg").Select

Excel1.Selection.ShapeRange.left=1

Excel1.Selection.ShapeRange.top=1

 

Excel1.Cells(3,3)="REPORTE DE ALMACENES"

Excel1.Cells(3,3).font.bold=.T.

Excel1.Cells(3,3).font.size=16

 

Excel1.Cells(4,1)="Fecha y Hora : " + DTOC(DATETIME())

 

Excel1.Range("A5:C5").Select

With Excel1.Selection

        .HorizontalAlignment = xlCenter

        .VerticalAlignment = xlBottom

        .WrapText = .F.

        .Orientation = 0

        .AddIndent = .F.

        .IndentLevel = 0

        .ShrinkToFit = .F.

        .ReadingOrder = xlContext

        .MergeCells = .F.

EndWith

Excel1.Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Excel1.Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Excel1.Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        .ColorIndex = 0

        .TintAndShade = 0

        .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .ColorIndex = 0

        .TintAndShade = 0

        .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .ColorIndex = 0

        .TintAndShade = 0

        .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        .ColorIndex = 0

        .TintAndShade = 0

        .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlInsideVertical)

        .LineStyle = xlContinuous

        .ColorIndex = 0

        .TintAndShade = 0

        .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlInsideHorizontal)

        .LineStyle = xlContinuous

        .ColorIndex = 0

        .TintAndShade = 0

        .Weight = xlThin

EndWith

With Excel1.Selection.Interior

        .Pattern = xlSolid

        .PatternColorIndex = xlAutomatic

        .ThemeColor = xlThemeColorAccent5

        .TintAndShade = -9.99786370433668E-02

        .PatternTintAndShade = 0

EndWith

 

*fila,columna

Excel1.Cells(5,1)="Ord"

Excel1.Cells(5,2)="Código"

Excel1.Cells(5,3)="Nombre"

 

Excel1.Columns('A:A').ColumnWidth=6.86

Excel1.Columns('B:B').ColumnWidth=7.29

Excel1.Columns('C:C').ColumnWidth=49.14

 

nContador=1

SCAN

      Excel1.Cells(nFila,1)=TRANSFORM(nContador)

      Excel1.Cells(nFila,2)=codalma

      Excel1.Cells(nFila,3)=nomalma

      WAIT WINDOW NOWAIT 'Exportando registro(s) ' + ALLTRIM(str(nContador))

                       

      nFila=nFila+1

      nContador=nContador+1

ENDSCAN

 

cRango='C6:C'+alltrim(STR(nFila))

Excel1.Range(cRango).Select

With Excel1.Selection

      .HorizontalAlignment = xlCenter

    .VerticalAlignment = xlBottom

    .WrapText = .T.

    .Orientation = 0

    .AddIndent = .F.

    .IndentLevel = 0

   .ShrinkToFit = .F.

    .ReadingOrder = xlContext

    .MergeCells = .F.

EndWith

 

*------------------------------

*almacen al cuadro

*------------------------------   

cRango='A5:C'+alltrim(STR(nFila-1))

Excel1.Range(cRango).Select

   

Excel1.Selection.Borders(xlDiagonalDown).LineStyle = xlNone

Excel1.Selection.Borders(xlDiagonalUp).LineStyle = xlNone

With Excel1.Selection.Borders(xlEdgeLeft)

      .LineStyle = xlContinuous

    .ColorIndex = 0

    .TintAndShade = 0

    .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlEdgeTop)

    .LineStyle = xlContinuous

    .ColorIndex = 0

    .TintAndShade = 0

    .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlEdgeBottom)

    .LineStyle = xlContinuous

    .ColorIndex = 0

    .TintAndShade = 0

    .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlEdgeRight)

    .LineStyle = xlContinuous

    .ColorIndex = 0

    .TintAndShade = 0

    .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlInsideVertical)

    .LineStyle = xlContinuous

    .ColorIndex = 0

    .TintAndShade = 0

    .Weight = xlThin

EndWith

With Excel1.Selection.Borders(xlInsideHorizontal)

    .LineStyle = xlContinuous

    .ColorIndex = 0

    .TintAndShade = 0

    .Weight = xlThin

EndWith

 

Excel1.ActiveWindow.DisplayGridlines = .F.

RELEASE Excel1

 

WAIT WINDOW NOWAIT 'Gracias, puede continuar!!!'

 

Saludos

Martín Inga

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAKiZPeExr4%3DcsbHFCNLPw4ZiDF%3DY-Ep%2B39ykR4vJCVDT1d5VJw%40mail.gmail.com.

Eduardo Armonti

unread,
Oct 14, 2022, 7:25:30 PM10/14/22
to publice...@googlegroups.com

Debes hacer la planilla en Excel pero previamente activar el grabado de macros.  Una vez que creas tener la planilla lista, detienes la grabación y te fijas las ordenes que se crearon en esa macro en  VBasic (son mas o menos parecidas al FoxPro) las debes transformar al FoxPro y hacerlas correr.   Vas a tener que experimentar un poco hasta ponerte hábil y lograr los resultados que quieres.

Es la única forma de aprender.

 

 

Enviado desde Correo para Windows

 

De: Jorge
Enviado: viernes, 14 de octubre de 2022 5:57 p. m.
Para: publicesvfoxpro
Asunto: [vfp] generar excel con extension xlsx desde visual fox pro

 

Hola :

--

Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/CAKiZPeExr4%3DcsbHFCNLPw4ZiDF%3DY-Ep%2B39ykR4vJCVDT1d5VJw%40mail.gmail.com.

 


Libre de virus.www.avast.com

Zarlu

unread,
Oct 15, 2022, 9:31:12 AM10/15/22
to Comunidad de Visual Foxpro en Español
Buenos días ciclon2506 !

Viendo tu archivo Excel mi opinión es que crees una plantilla y la rellenes con automatización.
Deberás considerar la cantidad de registros y tomar como referencia la última fila para asentar los datos finales.

Se puede hacer todo desde vfp, con código semejante al que ya mencionaron , pero la plantilla sería menos laboriosa.
Igual puedes probar a exportar el reporte con Foxypreview. Habría que ver que tan eficaz es para conservar el formato al exportar.

Suerte
zarlu
Chetumal, Quintana Roo, México
Reply all
Reply to author
Forward
0 new messages