Alguna ayuda para avanzar con TOleAuto para Excel
Publicado: Lun Nov 05, 2007 9:42 am
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.
/* 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.