Apertura lenta de archivo EXCEL oOleAuto()

Apertura lenta de archivo EXCEL oOleAuto()

Postby noe aburto » Thu Aug 10, 2017 5:33 pm

saludos

Estoy usando tOleAuto para abrir archivos de excel y poder leer su informacion, usando

oExcel :=TOleAuto():New("Excel.Application")
oExcel:WorkBooks:Open(cFilePol)
oHoja :=oExcel:Get("ActiveSheet")

pero no se cual de estas 3 instrucciones tarda demasiado, una vez abierto ya es muya rapida su lectura.

Consejos para usar la apertura y lectura de archivos de excel .xlsx mas practicos?

Gracias.
Noé Aburto Sánchez
Tec. Prog. de Sistemas. -Morelia, Mich. México.
fwh 20.06, Harbour 3.2.0, bcc 7.4
TsBrowse 9.0, TsButton 7.0, xEdit 6.1
naburtos@gmail.com, noeaburto67@hotmail.com
User avatar
noe aburto
 
Posts: 418
Joined: Wed Nov 26, 2008 6:33 pm
Location: Morelia, Mich. Mexico.

Re: Apertura lenta de archivo EXCEL oOleAuto()

Postby joseluisysturiz » Thu Aug 10, 2017 8:21 pm

Saludos, haber si te ayuda, gracias, saludos... :shock:

Code: Select all  Expand view

   oExcel := TOleAuto():New( "Excel.Application" )
   oExcel:WorkBooks:Add()

// ESPECIFICAS EN QUE HOJA QUIERES QUE SE INICIE Y TRABAJE, SE SELECCIONA Y LUEGO ACTIVA
*** oExcel:Sheets("Hoja2"):Select(); oHoja := oExcel:ActiveSheet()

   oHoja := oExcel:ActiveSheet() // SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO AL HOJA1

***   oHoja:PageSetup:Orientation := 2 // 1=xlPortrai(vertical), 2=xlLandscape(horizontal)
***   oHoja:Cells:Font:Name := "Arial" // ESPECIFICA TIPO DE LETRA PARA TODA LA HOJA
***   oHoja:Cells:Font:Size := 12 // ESPECIFICA TAMANO DE LETRA PARA TODA LA HOJA
***   oHoja:Cells(1, nFor):Font:Size := 16 // DETERMINA TAMAÑO DE LETRA A USAR EN UNA CELDA
***   oHoja:Cells(1, 1):Font:Bold := .t. // PONE EN NEGRITAS VALOR DE UNA CELDA
***   oHoja:Cells(1, 1):Font:ColorIndex := 5 // COLOR PREESTABLECIDO DE EXCEL DEL CONTENIDO DE LA CELDA
***   oHoja:Cells(3, 2):Font:Color := RGB(255,0,0) // COLOR DEL CONTENIDO DE LA CELDA
***   oHoja:Cells(1, 4):Interior:ColorIndex := 16 // COLOR PREESTABLECIDO DE EXCEL DE LA CELDA
***   oHoja:Cells(3, 2):Interior:Color := RGB(200,160,35) // COLOR DE LA CELDA
***   oHoja:Cells(3, 1):NumberFormat := "$ ###,##0.00"  // FORMATEAR CELDA NUMERICA
***   oHoja:Cells(7, 1):FormulaLocal:="=SUMA(A1:A5)" // APLICAR FORMULA A UNA CELDA
*
***   oHoja:Columns(n):ColumnWidth := n // ANCHO DE COLUMNA - aun no probado - 31/05/2016
***   oHoja:Columns(n):ColumnHeight := n // ALTO DE COLUMNA - aun no probado - 31/05/2016

   oHoja:Cells(1, 1):Value := "Llamada"
   oHoja:Cells(1, 2):Value := "Serial"
   oHoja:Cells(1, 3):Value := "Fecha de atención"
   oHoja:Cells(1, 4):Value := "Tiempo de Viaje"
   oHoja:Cells(1, 5):Value := "Inicio del trabajo"
   oHoja:Cells(1, 6):Value := "Fin del trabajo"
   oHoja:Cells(1, 7):Value := "Reporte - Comentario"

 oHoja:Shapes:AddPicture( "C:\SISINGE\SERVICIOS\BITMAPS\firma.jpg", .f., .t., 100, 100, 80, 100 ) // AGREGA IMAGEN A EXCEL
 oHoja:Shapes:AddPicture( "C:\SISINGE\SERVICIOS\BITMAPS\firma.jpg", .t., .t., 30, 30, 40, 60 ) // AGREGA IMAGEN A EXCEL

/*
Hoja1.Shapes.AddPicture "ruta:\Img.jpg", msoFalse, msoCTrue, Hoja1.Range("A1").Left, Hoja1.Range("A1").Top, Hoja1.Range("A1").Width, Hoja1.Range("A1").Height
esto lo que hace es colocar la imagen en la celda especifica, y la imagen toma el alto y ancho de la celda.
*/


   oQry:GOTOP()
   DO WHILE !oQry:EOF()
      oHoja:Cells(nRow, 1):Value := AllTrim( cValToChar( oQry:rep_num_llamada ) )
      oHoja:Cells(nRow, 2):Value := AllTrim( oQry:rep_num_serial )
      oHoja:Cells(nRow, 3):Value := oQry:rep_fch_servicio
//
      oHoja:Cells(nRow, 4):Value := SUBST( oQry:rep_tiempo_viaje_inicio, 1, 5 )
      oHoja:Cells(nRow, 5):Value := SUBST( oQry:rep_tiempo_rep_inicio, 1, 5 )
      oHoja:Cells(nRow, 6):Value := SUBST( oQry:rep_tiempo_rep_fin, 1, 5 )
//
      oHoja:Cells(nRow, 7):Value := AllTrim( cValToChar( oQry:rep_num_reporte ) ) + " " +;
         AllTrim( oQry:rep_observa1 ) + AllTrim( oQry:rep_observa2 ) +;
         AllTrim( oQry:rep_observa3 ) + AllTrim( oQry:rep_observa4 ) +;
         AllTrim( oQry:rep_observa5 ) + AllTrim( oQry:rep_observa6 )

      oQry:SKIP()

      nRow++
   ENDDO

// DESPUES DE CARGADO LOS DATOS A EXCEL, ES QUE SE HACEN LOS AJUSTES
   FOR nFor := 1 TO 7
      oHoja:Cells(1, nFor):Font:Bold := .t. // COLOCA TEXTO DE UNA CELDA EN NEGRITA
      oHoja:Cells(1, nFor):Interior:Color := RGB(192,192,192) // COLOR FONDO DE LA CELDA(gris claro)
//
      oHoja:Columns(nFor):AutoFit() // AJUSTA LA COLUMNA A LA  CELDA CON EL TEXTO MAS GRANDE
   NEXT

oHoja:Cells( 7, 1 ):FormulaLocal:="=SUMA(A1:A5)" // APLICAR FORMULA A UNA CELDA

   oHoja:Range("A1:F" + AllTrim( Str( nRow ) )):HorizontalAlignment := 7 // ALINEA(centra) QUE ESTE EN UN RANGO DE CELDAS HORIZONTALMENTE
   oHoja:Range("G1"):HorizontalAlignment := 7 // ALINEA(centra) QUE ESTE EN UN RANGO DE CELDAS HORIZONTALMENTE
//
   oHoja:Cells(1, 1):Select() // POSICIONA EL CURSO EN LA CELDA ESPECIFICADA
   oExcel:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL

    oHoja:PrintPreview() // MUESTRA PREVIEW DE LA HOJA ACTIVA
    oHoja:SaveAs( 'c:' + 'PRUEBA.XLS' ) // SALVAR ARCHIVO
    oHoja:End()
    oExcel:WorkBooks:Close() //oExcel:End()
Dios no está muerto...

Gracias a mi Dios ante todo!
User avatar
joseluisysturiz
 
Posts: 2064
Joined: Fri Jan 06, 2006 9:28 pm
Location: Guatire - Caracas - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 17 guests