Página 1 de 1

Alguna ayuda para avanzar con TOleAuto para Excel

Publicado: Lun Nov 05, 2007 9:42 am
por Xevi
Tengo este código para pasar datos de un ArrayBrowse a Excel,...
/* Conectamos con Excel y lo mostramos. */
oExcel := TOleAuto():New( "Excel.Application" )
/* Creamos una hoja nueva. */
oExcel:WorkBooks():Add()
oExcel:ActiveSheet:Range("A1"):Value := "CODI"
oExcel:ActiveSheet:Range("B1"):Value := "NOM"
oExcel:ActiveSheet:Range("C1"):Value := "DEURE"
oExcel:ActiveSheet:Range("D1"):Value := "HAVER"
oExcel:ActiveSheet:Range("E1"):Value := "SALDO"
oExcel:ActiveSheet:Range("F1"):Value := "ANTERIOR"
For n:=1 to Len( ::oBrowse1:aArrayData )
oExcel:ActiveSheet:Range( "A" + LTrim( Str( n+1 ) ) ):Value :=
::oBrowse1:aArrayData[n,1]
oExcel:ActiveSheet:Range( "B" + LTrim( Str( n+1 ) ) ):Value :=
::oBrowse1:aArrayData[n,2]
oExcel:ActiveSheet:Range( "C" + LTrim( Str( n+1 ) ) ):Value :=
::oBrowse1:aArrayData[n,3]
oExcel:ActiveSheet:Range( "D" + LTrim( Str( n+1 ) ) ):Value :=
::oBrowse1:aArrayData[n,4]
oExcel:ActiveSheet:Range( "E" + LTrim( Str( n+1 ) ) ):Value :=
::oBrowse1:aArrayData[n,5]
oExcel:ActiveSheet:Range( "F" + LTrim( Str( n+1 ) ) ):Value :=
::oBrowse1:aArrayData[n,6]
nTotalD += xNumCtoN( ::oBrowse1:aArrayData[n,3] )
nTotalH += xNumCtoN( ::oBrowse1:aArrayData[n,4] )
Next
oExcel:ActiveSheet:Range( "C" + LTrim( Str( n+1 ) ) ):Value :=
TransForm( nTotalD, "@E 999,999,999.99" )
oExcel:ActiveSheet:Range( "D" + LTrim( Str( n+1 ) ) ):Value :=
TransForm( nTotalH, "@E 999,999,999.99" )
oExcel:ActiveSheet:Range( "E" + LTrim( Str( n+1 ) ) ):Value :=
TransForm( Val(Str(nTotalD-nTotalH,15,2)), "@E 999,999,999.99" )
/* Salvamos la hoja. */
If File( oFile:cFullFileName )
FErase( oFile:cFullFileName )
EndIf
oExcel:ActiveWorkBook:SaveAs( oFile:cFileName )
/* Cerramos Excel y destruí­mos el objeto OLE. */
oExcel:Quit()
ShellExecute( 0, "open", oFile:cFullFileName, 0, 0, SW_SHOWNORMAL )
Funciona correctamente, ahora bien,...
desearí­a cambiar de fuente en alguna celda en concreto o en una columna, y
eso no hallo como hacerlo.
También no se como establecer el ancho de una columna.
Utilizando TFileXls si que se hacerlo, pero siempre es bueno tener
alternativas.
¿Alguna ayuda???
Gracias.
Un Saludo,
Xevi.

Alguna ayuda para avanzar con TOleAuto para Excel

Publicado: Lun Nov 05, 2007 11:14 am
por Xevi
Hay que leer mas...
Gracias a releer el foro... en un mensaje de Cristian y respondido por
Jose.F., luego de buscar en Excel, ademas de aprender, he dado con lo que
buscaba y más...
Establecer la letra en un rango...
:Range("A1:F1"):Font:Bold := .T.
:Range("A1:F1"):Font:Size := 12
:Range("A1:F1"):Font:Name := "Arial"
:Range("A1:F1"):Font:Italic := .T.
Establecer el ancho de una columna
:Columns("B"):ColumnWidth := 45
Un Saludo,
Xevi.
"Xevi" <xevicomas@gmail.com> escribió en el mensaje de noticias
news:472ed7a2$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>
> Tengo este código para pasar datos de un ArrayBrowse a Excel,...
>
> /* Conectamos con Excel y lo mostramos. */
> oExcel := TOleAuto():New( "Excel.Application" )
>
> /* Creamos una hoja nueva. */
> oExcel:WorkBooks():Add()
>
> oExcel:ActiveSheet:Range("A1"):Value := "CODI"
> oExcel:ActiveSheet:Range("B1"):Value := "NOM"
> oExcel:ActiveSheet:Range("C1"):Value := "DEURE"
> oExcel:ActiveSheet:Range("D1"):Value := "HAVER"
> oExcel:ActiveSheet:Range("E1"):Value := "SALDO"
> oExcel:ActiveSheet:Range("F1"):Value := "ANTERIOR"
> For n:=1 to Len( ::oBrowse1:aArrayData )
> oExcel:ActiveSheet:Range( "A" + LTrim( Str( n+1 ) ) ):Value :=
> ::oBrowse1:aArrayData[n,1]
> oExcel:ActiveSheet:Range( "B" + LTrim( Str( n+1 ) ) ):Value :=
> ::oBrowse1:aArrayData[n,2]
> oExcel:ActiveSheet:Range( "C" + LTrim( Str( n+1 ) ) ):Value :=
> ::oBrowse1:aArrayData[n,3]
> oExcel:ActiveSheet:Range( "D" + LTrim( Str( n+1 ) ) ):Value :=
> ::oBrowse1:aArrayData[n,4]
> oExcel:ActiveSheet:Range( "E" + LTrim( Str( n+1 ) ) ):Value :=
> ::oBrowse1:aArrayData[n,5]
> oExcel:ActiveSheet:Range( "F" + LTrim( Str( n+1 ) ) ):Value :=
> ::oBrowse1:aArrayData[n,6]
> nTotalD += xNumCtoN( ::oBrowse1:aArrayData[n,3] )
> nTotalH += xNumCtoN( ::oBrowse1:aArrayData[n,4] )
> Next
> oExcel:ActiveSheet:Range( "C" + LTrim( Str( n+1 ) ) ):Value :=
> TransForm( nTotalD, "@E 999,999,999.99" )
> oExcel:ActiveSheet:Range( "D" + LTrim( Str( n+1 ) ) ):Value :=
> TransForm( nTotalH, "@E 999,999,999.99" )
> oExcel:ActiveSheet:Range( "E" + LTrim( Str( n+1 ) ) ):Value :=
> TransForm( Val(Str(nTotalD-nTotalH,15,2)), "@E 999,999,999.99" )
>
> /* Salvamos la hoja. */
> If File( oFile:cFullFileName )
> FErase( oFile:cFullFileName )
> EndIf
> oExcel:ActiveWorkBook:SaveAs( oFile:cFileName )
>
> /* Cerramos Excel y destruí­mos el objeto OLE. */
> oExcel:Quit()
>
> ShellExecute( 0, "open", oFile:cFullFileName, 0, 0, SW_SHOWNORMAL )
>
> Funciona correctamente, ahora bien,...
> desearí­a cambiar de fuente en alguna celda en concreto o en una columna, y
> eso no hallo como hacerlo.
> También no se como establecer el ancho de una columna.
>
> Utilizando TFileXls si que se hacerlo, pero siempre es bueno tener
> alternativas.
> ¿Alguna ayuda???
>
> Gracias.
>
> Un Saludo,
> Xevi.
>

Alguna ayuda para avanzar con TOleAuto para Excel

Publicado: Lun Nov 05, 2007 1:19 pm
por ignacio
Xevi,
Mira el código fuente del metodo TReport:ToExcel().
Saludos,
--
Ignacio Ortiz de Zúñiga
http://www.xailer.com
"Xevi" <xevicomas@gmail.com> escribió en el mensaje
news:472eed31$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
> Hay que leer mas...
>
> Gracias a releer el foro... en un mensaje de Cristian y respondido por
> Jose.F., luego de buscar en Excel, ademas de aprender, he dado con lo que
> buscaba y más...
>
> Establecer la letra en un rango...
> :Range("A1:F1"):Font:Bold := .T.
> :Range("A1:F1"):Font:Size := 12
> :Range("A1:F1"):Font:Name := "Arial"
> :Range("A1:F1"):Font:Italic := .T.
>
> Establecer el ancho de una columna
> :Columns("B"):ColumnWidth := 45
>
> Un Saludo,
> Xevi.
>
>
> "Xevi" <xevicomas@gmail.com> escribió en el mensaje de noticias
> news:472ed7a2$[email=1@ozsrv2.ozlan.local...]1@ozsrv2.ozlan.local...[/email]
>>
>> Tengo este código para pasar datos de un ArrayBrowse a Excel,...
>>
>> /* Conectamos con Excel y lo mostramos. */
>> oExcel := TOleAuto():New( "Excel.Application" )
>>
>> /* Creamos una hoja nueva. */
>> oExcel:WorkBooks():Add()
>>
>> oExcel:ActiveSheet:Range("A1"):Value := "CODI"
>> oExcel:ActiveSheet:Range("B1"):Value := "NOM"
>> oExcel:ActiveSheet:Range("C1"):Value := "DEURE"
>> oExcel:ActiveSheet:Range("D1"):Value := "HAVER"
>> oExcel:ActiveSheet:Range("E1"):Value := "SALDO"
>> oExcel:ActiveSheet:Range("F1"):Value := "ANTERIOR"
>> For n:=1 to Len( ::oBrowse1:aArrayData )
>> oExcel:ActiveSheet:Range( "A" + LTrim( Str( n+1 ) ) ):Value :=
>> ::oBrowse1:aArrayData[n,1]
>> oExcel:ActiveSheet:Range( "B" + LTrim( Str( n+1 ) ) ):Value :=
>> ::oBrowse1:aArrayData[n,2]
>> oExcel:ActiveSheet:Range( "C" + LTrim( Str( n+1 ) ) ):Value :=
>> ::oBrowse1:aArrayData[n,3]
>> oExcel:ActiveSheet:Range( "D" + LTrim( Str( n+1 ) ) ):Value :=
>> ::oBrowse1:aArrayData[n,4]
>> oExcel:ActiveSheet:Range( "E" + LTrim( Str( n+1 ) ) ):Value :=
>> ::oBrowse1:aArrayData[n,5]
>> oExcel:ActiveSheet:Range( "F" + LTrim( Str( n+1 ) ) ):Value :=
>> ::oBrowse1:aArrayData[n,6]
>> nTotalD += xNumCtoN( ::oBrowse1:aArrayData[n,3] )
>> nTotalH += xNumCtoN( ::oBrowse1:aArrayData[n,4] )
>> Next
>> oExcel:ActiveSheet:Range( "C" + LTrim( Str( n+1 ) ) ):Value :=
>> TransForm( nTotalD, "@E 999,999,999.99" )
>> oExcel:ActiveSheet:Range( "D" + LTrim( Str( n+1 ) ) ):Value :=
>> TransForm( nTotalH, "@E 999,999,999.99" )
>> oExcel:ActiveSheet:Range( "E" + LTrim( Str( n+1 ) ) ):Value :=
>> TransForm( Val(Str(nTotalD-nTotalH,15,2)), "@E 999,999,999.99" )
>>
>> /* Salvamos la hoja. */
>> If File( oFile:cFullFileName )
>> FErase( oFile:cFullFileName )
>> EndIf
>> oExcel:ActiveWorkBook:SaveAs( oFile:cFileName )
>>
>> /* Cerramos Excel y destruímos el objeto OLE. */
>> oExcel:Quit()
>>
>> ShellExecute( 0, "open", oFile:cFullFileName, 0, 0, SW_SHOWNORMAL )
>>
>> Funciona correctamente, ahora bien,...
>> desearía cambiar de fuente en alguna celda en concreto o en una columna,
>> y eso no hallo como hacerlo.
>> También no se como establecer el ancho de una columna.
>>
>> Utilizando TFileXls si que se hacerlo, pero siempre es bueno tener
>> alternativas.
>> ¿Alguna ayuda???
>>
>> Gracias.
>>
>> Un Saludo,
>> Xevi.
>>
>

Re: Alguna ayuda para avanzar con TOleAuto para Excel

Publicado: Mié Ene 13, 2016 7:23 pm
por ramonzea
Podrían apoyarme con la equivalencia a:

Get( "ActiveWorkBook" )

?

Gracias de antemano.

Re: Alguna ayuda para avanzar con TOleAuto para Excel

Publicado: Jue Ene 14, 2016 10:36 am
por ignacio
Hola,

Pruebe con oExcel:ActiveWorkBook

https://msdn.microsoft.com/es-es/librar ... 21871.aspx

Saludos