Page 1 of 1

Como mejorar archivos creados en Excel

PostPosted: Tue Jan 15, 2013 3:12 pm
by lubin
Buen dia para todos

Desearia saber mejorar la creacion de archivos en Excel, en general uso la creacion de Objeto de Excel como lo muesto mas abajo, todo sale bien y me crea el archivo sin problemas, incluso con mas de 100,000 registros , pero es una hoja sin ningun efecto y con columnas fijas, me gustaria saber como puedo hacer lo siguiente :

1. Darle un ancho determinado a la columna del Excel
2. Como darle formato con Dos decimales a las culumna con valor numerico:
3. Como ponerle bordes al contorno de Unrango de celdas
4. Cono darle color de Letra una determinada columna
5. Como cambiar el Tipo de Letra o el tamaño de letra

Exsiten otros metodos como crear archivos en Excel mas amigablemente,
Por lo que se la Clase TXls() no funciona bien para Office10 o con archivos muy extensos, se corta.

Gracias por sus futuros comentarios

Lubin




Code: Select all  Expand view

oExcel:=CreateObject( "excel.application" )
oExcel:DisplayAlerts=.F.
oBook :=oExcel:Workbooks:Add()
oSheet:=oExcel:ActiveSheet
xls_nFormat := oBook:Get("FileFormat")  

*Titulos de la Hoja
oSheet:Cells(1,01):Value = "MES      "
oSheet:Cells(1,02):Value = "Nr.DOCUM"
oSheet:Cells(1,03):Value = "FECHA   "
oSheet:Cells(1,04):Value = "IMPORTE"
oSheet:Cells(1,05):Value = "COBRADOR"

xls_cMemo   :=""           && Campo de memo para el Copy-Paste
xls_fila    :=xls_fila+1    && La fila Inicial donde se cargan las lineas en bloque
xls_linpaste:=xls_fila     && Ultima fila pegada

*Lopp del Detalle del reporte
DO WHILE .not. eof()
  xls_vLinea:={}  
  * Cargo los valores a Pegar en el excel
                                                     
  aadd(xls_vLinea, CPAGO->MES       )
  aadd(xls_vLinea, CPAGO->NUMREGOPE )
  aadd(xls_vLinea, CPAGO->FECCOM    )
  aadd(xls_vLinea, CPAGO->IMPORTE )
  aadd(xls_vLinea, CPAGO->COBRADOR )
                                                   
 *Vamos contando cuantas filas van CARGADAS
  xls_fila=xls_fila+1
  *&& funcion que concatena y pega en la hoja de calculo
  xls_cMemo := xls_Linea(oSheet,xls_cMemo,xls_vLinea,xls_fila,@xls_linpaste)  
  SKIP   && paso al siguiguiente  registro
ENDDO
xls_final(oSheet,xls_cMemo,xls_linpaste)

*Cierre de reporte
oBook:saveAS( xls_File, xls_nFormat )
oExcel:Quit()      
 

Re: Como mejorar archivos creados en Excel

PostPosted: Wed Jan 16, 2013 8:24 pm
by lubin
Buenas Tardes con todos

Alguna idea respecto a esta consulta ... como crear y mejorar un archivo en Excel en formato , vista prestacion..

Gracias

Re: Como mejorar archivos creados en Excel

PostPosted: Wed Jan 16, 2013 9:02 pm
by pgfdz
Hola.
No estoy muy ducho en esto, pero si he descubierto hoy, que los ficheros de la última versión de excel (xlsx) son en realidad ficheros .zip renombrados y que en su interior hay ficheros xml y mas cosas. Lo digo por si queréis echarles un vistazo y por que a lo mejor se puede hacer una clase para que directamente haga ficheros en ese formato. Puede resultar muchisimo más rápido.
Yo voy a echarles un ojo pero con muchos ojos a lo mejor llegamos antes.
Un saludo

Re: Como mejorar archivos creados en Excel

PostPosted: Wed Jan 16, 2013 11:33 pm
by FiveWiDi
lubin wrote:Buen dia para todos

Desearia saber mejorar la creacion de archivos en Excel, en general uso la creacion de Objeto de Excel como lo muesto mas abajo, todo sale bien y me crea el archivo sin problemas, incluso con mas de 100,000 registros , pero es una hoja sin ningun efecto y con columnas fijas, me gustaria saber como puedo hacer lo siguiente :

1. Darle un ancho determinado a la columna del Excel
2. Como darle formato con Dos decimales a las culumna con valor numerico:
3. Como ponerle bordes al contorno de Unrango de celdas
4. Cono darle color de Letra una determinada columna
5. Como cambiar el Tipo de Letra o el tamaño de letra

Exsiten otros metodos como crear archivos en Excel mas amigablemente,
Por lo que se la Clase TXls() no funciona bien para Office10 o con archivos muy extensos, se corta.

Gracias por sus futuros comentarios

Lubin




Code: Select all  Expand view

oExcel:=CreateObject( "excel.application" )
oExcel:DisplayAlerts=.F.
oBook :=oExcel:Workbooks:Add()
oSheet:=oExcel:ActiveSheet
xls_nFormat := oBook:Get("FileFormat")  

*Titulos de la Hoja
oSheet:Cells(1,01):Value = "MES      "
oSheet:Cells(1,02):Value = "Nr.DOCUM"
oSheet:Cells(1,03):Value = "FECHA   "
oSheet:Cells(1,04):Value = "IMPORTE"
oSheet:Cells(1,05):Value = "COBRADOR"

xls_cMemo   :=""           && Campo de memo para el Copy-Paste
xls_fila    :=xls_fila+1    && La fila Inicial donde se cargan las lineas en bloque
xls_linpaste:=xls_fila     && Ultima fila pegada

*Lopp del Detalle del reporte
DO WHILE .not. eof()
  xls_vLinea:={}  
  * Cargo los valores a Pegar en el excel
                                                     
  aadd(xls_vLinea, CPAGO->MES       )
  aadd(xls_vLinea, CPAGO->NUMREGOPE )
  aadd(xls_vLinea, CPAGO->FECCOM    )
  aadd(xls_vLinea, CPAGO->IMPORTE )
  aadd(xls_vLinea, CPAGO->COBRADOR )
                                                   
 *Vamos contando cuantas filas van CARGADAS
  xls_fila=xls_fila+1
  *&& funcion que concatena y pega en la hoja de calculo
  xls_cMemo := xls_Linea(oSheet,xls_cMemo,xls_vLinea,xls_fila,@xls_linpaste)  
  SKIP   && paso al siguiguiente  registro
ENDDO
xls_final(oSheet,xls_cMemo,xls_linpaste)

*Cierre de reporte
oBook:saveAS( xls_File, xls_nFormat )
oExcel:Quit()      
 


A ver si estas líneas te ayudan, pruébalas.

// Line styles
#define xlContinuous 1
#define xlDash -4115
#define xlDashDot 4
#define xlDashDotDot 5
#define xlDot -4118
#define xlDouble -4119
#define xlSlantDashDot 13
#define xlLineStyleNone -4142


// Border positions
#define xlEdgeLeft 7
#define xlEdgeTop 8
#define xlEdgeBottom 9
#define xlEdgeRight 10

oExcel := CreateObject( "Excel.Application" )
oExcel:WorkBooks:Add()
oAS := oExcel:ActiveSheet()
oAs:Range( "C10" ):Value := "Marco"
oAs:Range( "C10" ):Borders( xlEdgeTop ):LineStyle := xlContinuous

oHoja:Rows( 2 ):Font:Bold := .T.

oHoja:Cells( 1, 4 ):Value := AMPAarra[2][3][1][13]

oHoja:Cells( 2, 1 ):AddComment()
oHoja:Cells( 2, 1 ):Comment:Text := "la data, fechita"

oHoja:Columns( 1 ):Set( "NumberFormat", "#,##0" )

oHoja:Columns( (nContador + 1 ) ):NumberFormat := "#.##0"

oHoja:Columns( (nContador + 1 ) ):NumberFormat := Lower( Set( _SET_DATEFORMAT ) )
oHoja:Columns( (nContador + 1 ) ):HorizontalAlignment := - 4152 //xlRight
oHoja:Cells( nFound, 3 ):HorizontalAlignment := - 4108 //Centrat
oHoja:Columns( (nContador + 1 ) ):Set( "NumberFormat", "@" )

oHoja:Cells( nFound, nCol ):Borders():LineStyle := 1
oHoja:Cells( nFound, nCol ):Borders( 8 ):LineStyle := 1

oHoja:Cells( nLinea, 3 ):AddComment()
oHoja:Cells( nLinea, 3 ):Comment:Text( AllTrim(oTdbfFamili:Obsefact) )

oHoja:Columns( 1 ):ColumnWidth := 6
oHoja:Columns( 2 ):ColumnWidth := 12
oHoja:Columns( 3 ):ColumnWidth := 10.5

oHoja:Cells( nLinea + 2, 8 ):NumberFormat := "#.##0,00"

oHoja:Cells( nLinea, 4 ):Font:Italic := .T.

Si descubres como cambiar el tipo de letra o colorear una celda o su contenido, dímelo por favor; yo no se hacerlo.

Re: Como mejorar archivos creados en Excel

PostPosted: Sat Jan 19, 2013 4:47 pm
by lubin
Muchas gracias por el Dato

Voy a probarlo y les comento los resultados... y pues claro que si descrubro algo mas todos lo sabran

Lubin ..

Re: Como mejorar archivos creados en Excel

PostPosted: Tue Jan 22, 2013 11:21 am
by nageswaragunupudi
I suggest if you study the code of METHOD ToExcel in xbrowse.prg, you will find answers to all your questions.

Re: Como mejorar archivos creados en Excel

PostPosted: Tue Jan 22, 2013 12:38 pm
by lubin
Buena sugerencia
supongo que debe usar la misma metodologia

Gracias