Pasar datos de Excel a DBF

Pasar datos de Excel a DBF

Postby servicomver » Tue Aug 25, 2015 5:06 pm

Hola a todos, necesito pasar datos constantemente de un archivo de excel a un DBF donde se va guardando toda la informacion contenida en el archivo, es posible realizarlo ?, en algunas ocasiones es la HOJA 1 pero en ocasiones son mas.

Alguna sugerencia ??

saludos
servicomver
 
Posts: 179
Joined: Fri Nov 18, 2005 7:34 pm

Re: Pasar datos de Excel a DBF

Postby cnavarro » Tue Aug 25, 2015 5:08 pm

Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6500
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Pasar datos de Excel a DBF

Postby joseluisysturiz » Wed Aug 26, 2015 3:52 am

Algo que trabaje recientemente, muchas cosas comentadas, esta como leer un libro, una hoja, una columna, una celda, etc...saludos... :shock:

Code: Select all  Expand view


#include "FiveWin.ch"

MEMVAR oDatos

PROCEDURE lee_libro()

   LOCAL nFor := 0, oExcel2, nVeces := 0 ,;
      nRowIni := 6 ,; // CONTROLADOR DE LINEAS DONDE SE GRABARA DATOS
      aArchiAngu := { "angulo0", "angulo10", "angulo20", "angulo30" ,;
         "angulo40", "angulo50", "angulo60", "angulo70", "angulo80" ,;
         "angulo90", "angulo100", "angulo110", "angulo120", "angulo130" ,;
         "angulo140", "angulo150", "angulo160", "angulo170" }

   cResumen := "C:\SISTEMA TANIA\EXCEL\resumen.xlsm"

   oExcel2 := TOleAuto():New( "Excel.Application" ) // ACTIVANDO EXCEL
   oExcel2:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL
   oExcel2:Workbooks:Open( cResumen ) // ABRO EL ARCHIVO

*   FOR nVeces := 1 TO 2

      FOR nFor := 1 TO Len( aArchiAngu )
         cFileXls := "C:\SISTEMA TANIA\EXCEL\" + aArchiAngu[nFor]
         lee_angulos( cFileXls, oExcel2, nRowIni, nVeces )
         nRowIni++ // CONTROLADOR DE LINEAS DONDE SE GRABARA DATOS
      NEXT

*   NEXT

// FINALIZADO
   MsgInfo( "
Finalizado.", oDatos:cTitMsg )
   oDatos:oWndPPAL:END()

RETURN

PROCEDURE lee_angulos( cFileXls, oExcel2, nRowIni, nVeces )

   LOCAL oExcel, oHoja, nRows, nCols, nCol, nRow ,;
      nPiso := 0, nColum := 0 ,;
      cPiso := "
PISO" ,;
      aAngulo := {} // contiene por cada columna(col.B) el valor de V(col.C) y el angulo de respuesta(col.E)

   oExcel := TOleAuto():New( "
Excel.Application" ) // ACTIVANDO EXCEL
   oExcel:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL
   oExcel:Workbooks:Open( cFileXls ) // ABRO EL ARCHIVO DE ANGULOS...

   FOR nPiso := 1 TO 10 // LEYENDO LOS PISOS DEL 1 AL 10

      ASize( aAngulo, 0 ) // BLANQUEANDO DATOS LEIDOS

      cPiso := "
PISO"
      cPiso := cPiso + cValToChar(nPiso)

      oExcel:Sheets(cPiso):Select() // SELECCIONO Y ME CAMBIO A LA HOJA Q VOY A LEER(pisos)
      oHoja := oExcel:ActiveSheet() // ACTIVO HOJA SELECCIONADA, SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO LA HOJA1
      oHoja:Cells(2, 2):Select() // POSICIONA EL CURSO EN LA CELDA ESPECIFICADA PARA LEER COLUMNA( row, col / fila, col)

      nRows := oHoja:UsedRange:Rows:Count() // CANTIDAD LINEAS USADAS INCLUYENDO LA LINEA 1 QUE ES LA CABECERA
*      nCols := oHoja:UsedRange:Columns:Count() // CANTIDAD COLUMNAS USADAS

      FOR nColum := 2 TO nRows STEP 3 // LEO VALORES DE LAS COLUMNAS 1 HASTA LA 121(nRows)
         oHoja:Cells(nColum, 5):NumberFormat := "
@" // FORMATO TEXTO(general)
   *      oHoja:Cells(nColum, 2):Value // COLUMNAS
   *      oHoja:Cells(nColum, 3):Value // V
   *      oHoja:Cells(nColum, 4):Value // ANGULO APLICADO
   *      oHoja:Cells(nColum, 5):Value // ANGULOS DE RESPUESTA

*         AAdd( aAngulo, { oHoja:Cells(nColum, 3) ,;//Round( oHoja:Cells(nColum, 3):Value, 2 ) ,; // REDONDEO VALOR DE 'V' A 2 DECIMALES
         AAdd( aAngulo, { oHoja:Cells(nColum, 3) ,;//Round( oHoja:Cells(nColum, 3):Value, 2 ) ,; // REDONDEO VALOR DE 'V' A 2 DECIMALES
                          oHoja:Cells(nColum, 5):Value ,; // ANGULO DE RESPUESTA
                          oHoja:Cells(nColum, 2):Value } ) // NUMERO COLUMNA(1-121)
      NEXT

      graba_resumen( oExcel2, cPiso, aAngulo, nRowIni, cFileXls ) // GRABO EN LIBRO RESUMEN

   NEXT

// CERRANDO EXCEL
   oExcel:Get("
ActiveWorkBook"):Save() // SALVA LIBRO ACTIVO
   oExcel:WorkBooks:Close() // CIERRA LIBRO ACTIVO
   oExcel:Quit() // CIERRA EXCEL

RETURN

PROCEDURE graba_resumen( oExcel2, cPiso, aAngulo, nRowIni )

   LOCAL nColIni := 3, nFor := 0, oHoja2

   LOCAL cMensaje := "
Libro: " + cFileXls + " - Piso: " + cPiso

   msgwait("
Procesando: " + cMensaje, "Espere", 1)

// ESPECIFICAS EN QUE HOJA QUIERES QUE SE INICIE Y TRABAJE, SE SELECCIONA Y LUEGO ACTIVA
   oExcel2:Sheets(cPiso):Select() // SELECCIONO EN QUE HOJA VOY A GRABAR
   oHoja2 := oExcel2:ActiveSheet() // SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO LA HOJA1

   oHoja2:Cells(nRowIni, nColIni):Select() // POSICIONA EL CURSO EN LA CELDA ESPECIFICADA( row, col / fila, col)

   FOR nFor := 1 TO Len( aAngulo )
      oHoja2:Cells( nRowIni, nColIni ):Value := aAngulo[nFor, 1] // CORTANTE
      nColIni++
      oHoja2:Cells( nRowIni, nColIni ):Value := aAngulo[nFor, 2] // ANGULO DE RESPUESTA
      nColIni++
   NEXT

RETURN




















/*
PROCEDURE ejecutados_excel( oQry, aVar )

   LOCAL oExcel, oHoja, nRow := 2, nCol := 1, nFor := 0

   IF oQry:RecCount() == 0
      MSGALERT( "
No hay Registros en este Periodo de Fechas: " +;
         DToC( aVar[1] ) + "
al " + DToC( aVar[2] ), oDatos:cTitMsg )

      RETURN
   ENDIF

   oExcel := TOleAuto():New( "
Excel.Application" )
   oExcel:WorkBooks:Add() // AGREGA UNA HOJA A UN LIBRO

// 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: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"

   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()

RETURN
*/

/*
PROCEDURE excel_tabla( oMeter, oText, oDlg, lEnd, cFileXls )

   LOCAL oExcel, oBook, nRows, nCols, nCol, nRow, oError, cSql

   oExcel := TOleAuto():New( "
Excel.Application" ) // ACTIVANDO EXCEL
   oExcel:Workbooks:Open( cFileXls ) // ABRO EL ARCHIVO SELECCIONADO
//
   oBook := oExcel:Get( "
ActiveSheet" ) // ACTIVO HOJA EXCEL
   nRows := oBook:UsedRange:Rows:Count() // CANTIDAD LINEAS EXCEL INCLUYENDO LA LINEA 1 QUE ES LA CABECERA
   nCols := oBook:UsedRange:Columns:Count() // CANTIDAD COLUMNAS EXCEL

   oMeter:nTotal = nRows // PASO AL METER TOTAL DE LINEAS

   FOR nRow = 2 TO nRows // CARGANDO DE EXCEL TABLA REPORTES
      cSql := "
INSERT INTO servicios_reportes SET "
//
      cSql += "
rep_nombre_cliente='" + oBook:Cells( nRow, 1 ):Value + "', "
      cSql += "
rep_num_reporte=" + ClipValue2SQL( oBook:Cells( nRow, 2 ):Value ) + ", "
      cSql += "
rep_equipo_cliente=" + ClipValue2SQL( oBook:Cells( nRow, 3 ):Value ) + ", "
// ojo - esta columna esta llegando de tipo numerica
      cSql += "
rep_num_serial=" + ClipValue2SQL( SUBST( cValToChar( oBook:Cells( nRow, 4 ):Value ), 1, 10 ) ) + ", " // 18/12/2014
//
      cSql += "
rep_num_llamada=" + ClipValue2SQL( oBook:Cells( nRow, 5 ):Value ) + ", "
      cSql += "
rep_preventivo=" + ClipValue2SQL( 1 ) + ", " // SIEMPRE ES PREVENTIVO - COL.6 DE EXCEL
//
      cSql += "
rep_tiempo_viaje_inicio=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 7 ):Value, 1, 5 ) ) + ", "
      cSql += "
rep_tiempo_viaje_fin=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 7 ):Value, 7, 5 ) ) + ", "
//
      cSql += "
rep_tiempo_espera_inicio=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 8 ):Value, 1, 5 ) ) + ", "
      cSql += "
rep_tiempo_espera_fin=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 8 ):Value, 7, 5 ) ) + ", "
//
      cSql += "
rep_tiempo_rep_inicio=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 9 ):Value, 1, 5 ) ) + ", "
      cSql += "
rep_tiempo_rep_fin=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 9 ):Value, 7, 5 ) ) + ", "
//
      cSql += "
rep_localidad=" + ClipValue2SQL( AllTrim( oBook:Cells( nRow, 10 ):Value ) +; // COL.10 y 11
         "
, " + AllTrim( oBook:Cells( nRow, 11 ):Value ) ) + ", "

      cSql += "
rep_estado=" + ClipValue2SQL( AllTrim( oBook:Cells( nRow, 11 ):Value ) ) + ", " // 05/01/2015

      cSql += "
rep_codi_ingeniero=" + ClipValue2SQL( oBook:Cells( nRow, 12 ):Value ) + ", "
//
      IF LEN( oBook:Cells( nRow, 13 ):Value ) <= 50 // DESDE 1-50
         cSql += "
rep_observa1=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value ,;
            1, Len( oBook:Cells( nRow, 13 ):Value ) ) ) + "
, "

      ELSE
         cSql += "
rep_observa1=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value, 1, 50 ) ) + ", "
      ENDIF

      IF LEN( oBook:Cells( nRow, 13 ):Value ) > 50 .and. LEN( oBook:Cells( nRow, 13 ):Value ) <= 110 // DESDE 51-110
         cSql += "
rep_observa2=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value ,;
            51, Len( oBook:Cells( nRow, 13 ):Value ) ) ) + "
, "

      ELSE // DESDE 111-170
         cSql += "
rep_observa2=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value, 51, 110 ) ) + ", "
         cSql += "
rep_observa3=" + ClipValue2SQL( SUBST( oBook:Cells( nRow, 13 ):Value ,;
            111, Len( oBook:Cells( nRow, 13 ):Value ) ) ) + "
, "
      ENDIF
//
      cSql += "
rep_np1=" + ClipValue2SQL( IF( Len( cValToChar( oBook:Cells( nRow, 14 ):Value ) ) > 0 ,;
         SUBST( cValToChar( oBook:Cells( nRow, 14 ):Value ), 1, 12 ), ) ) + "
, "
      cSql += "
rep_np2=" + ClipValue2SQL( IF( Len( cValToChar( oBook:Cells( nRow, 15 ):Value ) ) > 0 ,;
         SUBST( cValToChar( oBook:Cells( nRow, 15 ):Value ), 1, 12 ), ) ) + "
, "
//
*** COL 16 - FECHA DE IMPRESION
cSql += "
rep_fch_impresion='" + oBook:Cells( nRow, 16 ):Value + "', "
*** COL 17 - TIPO DE ZONA
cSql += "
rep_tipo_zona='" + oBook:Cells( nRow, 17 ):Value + "', "
*** COL 18 - SERVICIO
cSql += "
rep_servicio='" + oBook:Cells( nRow, 18 ):Value + "', "
*** COL 19 - TARIFA
cSql += "
rep_tarifa=" + ClipValue2SQL( oBook:Cells( nRow, 19 ):Value ) + ", "
//
      cSql += "
rep_fch_emision=" + ClipValue2SQL( Date() ) + ","
// AUDITORIA
      cSql += "
usuario=" + ClipValue2SQL( "00" ) + ","
      cSql += "
hora=" + ClipValue2SQL( time() ) + ","
      cSql += "
fchcrea=" + ClipValue2SQL( date() )

      TRY
         oDatos:oConex:Execute( cSql )

      CATCH oError
         MSGALERT( oError:Description + CRLF + ;
            "
Error Grabando en Tabla servicios_reportes, Sentencia" + CRLF + CRLF + ;
            cSql, oDatos:cTitMsg )

      END

      oMeter:Set( nRow )

   NEXT

// CERRANDO EXCEL
   oExcel:WorkBooks:Close()
   oExcel:Application:Quit()
   oExcel:Quit()
   oExcel := Nil

   MsgInfo( cValToChar( nRows -1 ) + "
Reportes Importados Correctamente", oDatos:cTitMsg )

RETURN
*/

/*
PROCEDURE soporte_facturas_excel( oQry, aVar )

   LOCAL oExcel, oHoja, nRow := 4, nCol := 1, nFor := 0

   IF oQry:RecCount() == 0
      MSGALERT( "
No hay Registros en este Periodo de Fechas: " +;
         DToC( aVar[1] ) + "
al " + DToC( aVar[2] ), oDatos:cTitMsg )

      RETURN
   ENDIF

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

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

*   oHoja:Cells(1, 1):Value := "
REPORTES DE INTERVENCIÓN POR SERVICIOS AL CLIENTE " +;
*      "
SOPORTE FACTURA No. XXXX DE FECHA DD/MM/AAAA"
//
   oHoja:Cells(3, 1):Value := "
LLAMADA"
   oHoja:Cells(3, 2):Value := "
REPORTE"
   oHoja:Cells(3, 3):Value := "
FECHA DE SERVICIO"
   oHoja:Cells(3, 4):Value := "
CLIENTE"
   oHoja:Cells(3, 5):Value := "
LOCALIDAD"
   oHoja:Cells(3, 6):Value := "
TIPO ZONA"
   oHoja:Cells(3, 7):Value := "
SERVICIO"
   oHoja:Cells(3, 8):Value := "
ORSERVACION"
   oHoja:Cells(3, 9):Value := "
TARIFA Bs."

   oQry:GOTOP()
   DO WHILE !oQry:EOF()
      oHoja:Cells(nRow, 1):Value := AllTrim( cValToChar( oQry:rep_num_llamada ) )
      oHoja:Cells(nRow, 2):Value := AllTrim( cValToChar( oQry:rep_num_reporte ) )
      oHoja:Cells(nRow, 3):Value := oQry:rep_fch_servicio
      oHoja:Cells(nRow, 4):Value := AllTrim( oQry:rep_nombre_cliente )
      oHoja:Cells(nRow, 5):Value := AllTrim( oQry:rep_localidad )
      oHoja:Cells(nRow, 6):Value := AllTrim( oQry:rep_tipo_zona )
      oHoja:Cells(nRow, 7):Value := AllTrim( oQry:rep_servicio )
      oHoja:Cells(nRow, 8):Value := "
EJECUTADO"//oQry:rep_servicio
      oHoja:Cells(nRow, 9):Value := oQry:rep_tarifa
//
      oQry:SKIP()

      nRow++
   ENDDO

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

   oHoja:Cells(nRow, 8):Value := "
Total Bs."
   oHoja:Cells(nRow, 8):Font:Bold := .t. // COLOCO EN NEGRITA TEXTO Total Bs.
   oHoja:Cells(nRow, 9):Font:Bold := .t. // COLOCO EN NEGRITA TOTAL DE LA SUMATORIA
   oHoja:Cells(nRow, 9):FormulaLocal:="
=SUMA(I4:I" + cValToChar(nRow-1) + ")" // APLICAR FORMULA A UNA CELDA

   oHoja:Range("
A3:H" + AllTrim( Str( nRow-1 )) ):HorizontalAlignment := 7 // ALINEA(centra) QUE ESTE EN UN RANGO DE CELDAS HORIZONTALMENTE
// COLOCO TEXTO DE CELDA 1,1 ACA ABAJO PARA QUE NO SE AJUSTE COLUMNA AL TAMAÑO DE ESTE TEXTO
   oHoja:Cells(1, 1):Value := "
REPORTES DE INTERVENCIÓN POR SERVICIOS AL CLIENTE " +;
      "
SOPORTE FACTURA No. XXXX DE FECHA DD/MM/AAAA"

//
   oHoja:Cells(1, 1):Select() // POSICIONA EL CURSO EN LA CELDA ESPECIFICADA
   oExcel:Visible := .t. // MOSTRAR O NO HOJA DE EXCEL

RETURN
*/

/*
PROCEDURE pendientes_ejecutar_excel( oQry, oBrw )

   LOCAL oExcel, oHoja, nRow := 2, nCol := 1, nFor := 0

   oQry:SetWhere( "
rep_status = 1" ) // PENDIENTES POR EJECUTAR
   oQry:SetOrder( "
orden" )
   oBrw:REFRESH()

   IF oQry:RecCount() == 0
      MSGALERT( "
No hay Reportes por Ejecutar.", oDatos:cTitMsg )

      RETURN
   ENDIF

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

   oHoja := oExcel:ActiveSheet() // SINO ESPECIFICAS QUE HOJA, TOMARA POR DEFECTO LA HOJA1
//
   oHoja:Cells(1, 1):Value := "
CLIENTE"
   oHoja:Cells(1, 2):Value := "
LLAMADA"
   oHoja:Cells(1, 3):Value := "
REPORTE"
   oHoja:Cells(1, 4):Value := "
SERIAL"
   oHoja:Cells(1, 5):Value := "
EQUIPO/MODELO"
   oHoja:Cells(1, 6):Value := "
LOCALIDAD"
   oHoja:Cells(1, 7):Value := "
ESTADO"

   oQry:GOTOP()
   DO WHILE !oQry:EOF()
      oHoja:Cells(nRow, 1):Value := AllTrim( oQry:rep_nombre_cliente )
      oHoja:Cells(nRow, 2):Value := AllTrim( cValToChar( oQry:rep_num_llamada ) )
      oHoja:Cells(nRow, 3):Value := AllTrim( cValToChar( oQry:rep_num_reporte ) )
      oHoja:Cells(nRow, 4):Value := AllTrim( oQry:rep_num_serial )
      oHoja:Cells(nRow, 5):Value := AllTrim( oQry:rep_equipo_cliente )
      oHoja:Cells(nRow, 6):Value := AllTrim( oQry:rep_localidad )
      oHoja:Cells(nRow, 7):Value := AllTrim( oQry:rep_estado )
//
      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):Font:Color := RGB(255,0,0) // COLOR DEL CONTENIDO DE LA CELDA(rojo)
      oHoja:Cells(1, nFor):Interior:Color := RGB(255,255,0) // COLOR FONDO DE LA CELDA(amarillo)
//
      oHoja:Columns(nFor):AutoFit() // AJUSTA LA COLUMNA A LA  CELDA CON EL TEXTO MAS GRANDE

*** oHoja:Cells(1, nFor):Borders(xlTop):LineStyle = xlNone // intentando colocar bordes

   NEXT

   oHoja:Range("
A1:F" + AllTrim( Str( nRow )) ):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

   oQry:SETWHERE(); oQry:REFRESH()
   oBrw:GOTOP(); oBrw:REFRESH()

RETURN
*/

/* PONER BORDES A CELDAS CON FWH
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.
*/



/* PONER BORDES A LAS CELDAS PERO CON VISUAL BASIC
Range("
C6:E15").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
*/





/*
* Este ejemplo muestra como crear un libro Excel utilizando datos de un control Grid, sin la interacción del usuario.

 * Ejemplo Excel n° 1
 * Autor: Fernando Yurisich <fernando.yurisich@gmail.com>
 * Licenciado bajo The Code Project Open License (CPOL) 1.02
 * Vea <http://www.codeproject.com/info/cpol10.aspx>
 *
 * Basado en un ejemplo de la distribución de OOHG creada
 * por Ciro Vargas C. <cvc@oohg.org>
 * Partes del código en la función ToExcel están
 * licenciadas bajo la licencia de OOHG.

#include 'oohg.ch'

FUNCTION Main()

   LOCAL i, aRows[ 15, 5 ]

   SET DATE BRITISH
   SET CENTURY ON
   SET NAVIGATION EXTENDED

   DEFINE WINDOW Form_1 ;
      AT 0,0 ;
      WIDTH 600 ;
      HEIGHT 480 ;
      TITLE 'Exportar Datos de un Grid a un Libro Excel' ;
      MAIN

      DEFINE STATUSBAR
         STATUSITEM 'El Poder de OOHG !!!'
      END STATUSBAR

      FOR i := 1 TO 15
          aRows[ i ] := { Str(HB_RandomInt( 99 ), 2), ;
                          HB_RandomInt( 100 ), ;
                          Date() + Random( HB_RandomInt() ), ;
                          'Refer ' + Str( HB_RandomInt( 10 ), 2 ), ;
                          HB_RandomInt( 10000 ) }
      NEXT i

      @ 20,20 GRID Grid_1 obj oGrid ;
         WIDTH 520 ;
         HEIGHT 330 ;
         HEADERS { 'CÓDIGO', 'NUMERO', 'FECHA', 'REFERENCIA', 'IMPORTE' } ;
         WIDTHS { 60, 80, 100, 120, 140 } ;
         ITEMS aRows ;
         COLUMNCONTROLS { { 'TEXTBOX', 'CHARACTER', '99' } , ;
                          { 'TEXTBOX', 'NUMERIC', '999999' } , ;
                          { 'TEXTBOX', 'DATE' }, ;
                          { 'TEXTBOX', 'CHARACTER' }, ;
                          { 'TEXTBOX', 'NUMERIC', ' 999,999,999.99' } } ;
         FONT 'COURIER NEW' SIZE 10

      @ 370,20 BUTTON btn_Export ;
         CAPTION 'Exportar a Excel' ;
         WIDTH 140 ;
         ACTION ToExcel( oGrid )

      ON KEY ESCAPE ACTION Form_1.Release()
   END WINDOW

   CENTER WINDOW Form_1
   ACTIVATE WINDOW Form_1

RETURN NIL

FUNCTION ToExcel( oGrid )

   LOCAL cBefore, oExcel, oSheet, nLin, nRow, nCol

   cBefore := Form_1.StatusBar.Item( 1 )
   Form_1.StatusBar.Item( 1 ) := 'Creando PRUEBA.XLS en la carpeta base ...'

#ifndef __XHARBOUR__
   IF( oExcel := win_oleCreateObject( 'Excel.Application' ) ) == NIL
      MsgStop( 'Error: Excel no está disponible [' + win_oleErrorText()+ ']' )
      RETURN NIL
   ENDIF
#else
   oExcel := TOleAuto():New( 'Excel.Application' )
   IF Ole2TxtError() != 'S_OK'
      MsgStop( 'Error: Excel no está disponible.' )
      RETURN NIL
   ENDIF
#endif

   oExcel:WorkBooks:Add()
   oSheet := oExcel:ActiveSheet()
   oSheet:Cells:Font:Name := 'Arial'
   oSheet:Cells:Font:Size := 10

   oSheet:Cells( 1, 1 ):Value := Upper( 'Exportado desde OOHG !!!' )
   oSheet:Cells( 1, 1 ):Font:Bold := .T.

   nLin := 4
   FOR nCol := 1 TO Len( oGrid:aHeaders )
      oSheet:Cells( nLin, nCol ):Value := Upper( oGrid:aHeaders[ nCol ] )
      oSheet:Cells( nLin, nCol ):Font:Bold := .T.
   NEXT
   nLin += 2

   FOR nRow := 1 to oGrid:ItemCount
      FOR nCol := 1 to Len( oGrid:aHeaders )
         oSheet:Cells( nLin, nCol ):Value := oGrid:Cell( nRow, nCol )
      NEXT
      nRow ++
      nLin ++
   NEXT

   FOR nCol := 1 TO Len( oGrid:aHeaders )
      oSheet:Columns( nCol ):AutoFit()
   NEXT

   oSheet:SaveAs( HB_DirBase() + 'PRUEBA.XLS' )
   oExcel:WorkBooks:Close()
   oExcel:Quit()

   oSheet := NIL
   oExcel := NIL

   MsgInfo( HB_DirBase() + 'PRUEBA.XLS fue creado' + HB_OsNewLine() + ;
            'y EXCEL.EXE fue descargado de la memoria.' )

   Form_1.StatusBar.Item( 1 ) := cBefore

RETURN NIL

*/


/*
*
* HBTEST.PRG
*
* Este ejemplo es para probar con Harbour en modo consola, sin FiveWin
* para Harbour.
*
* This example is done for testing with Harbour in console mode, without
* FiveWin for Harbour.
*


#define CRLF Chr( 13 ) + Chr( 10 )


PROCEDURE MAIN()

LOCAL nOption

CLS
SetColor("
W+/R")
@ 6, 25 TO 16, 55 DOUBLE
@ 8, 28 SAY "
Probar OLE con..."

While .t.
@ 10, 32 PROMPT "
Excel"
@ 11, 32 PROMPT "
Word"
@ 12, 32 PROMPT "
Internet Explorer"
@ 13, 32 PROMPT "
Outlook"
@ 14, 32 PROMPT "
Salir"

MENU TO nOption

IF nOption == 0
nOption := 5
ELSEIF nOption == 1
EXCEL97()
ELSEIF nOption == 2
WORD97()
ELSEIF nOption == 3
IEXPLORER()
ELSEIF nOption == 4
OUTLOOK()
ELSEIF nOption == 5
EXIT
ENDIF
End

SetColor("
W/N")
CLS

RETURN

//--------------------------------------------------------------------

STATIC PROCEDURE EXCEL97()

LOCAL oExcel, oHoja

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

oExcel:WorkBooks:Add()

oHoja := oExcel:ActiveSheet()

oHoja:Cells:Font:Name := "
Arial"
oHoja:Cells:Font:Size := 12

oHoja:Cells( 3, 1 ):Value := "
Texto:"
oHoja:Cells( 3, 2 ):Value := "
Esto es un texto"
oHoja:Cells( 4, 1 ):Value := "
N?mero:"
oHoja:Cells( 4, 2 ):NumberFormat := "
#.##0,00"
oHoja:Cells( 4, 2 ):Value := 1234.50
oHoja:Cells( 5, 1 ):Value := "
L?gico:"
oHoja:Cells( 5, 2 ):Value := .T.
oHoja:Cells( 6, 1 ):Value := "
Fecha:"
oHoja:Cells( 6, 2 ):Value := DATE()

oHoja:Columns( 1 ):Font:Bold := .T.
oHoja:Columns( 2 ):HorizontalAlignment := -4152 // xlRight

oHoja:Columns( 1 ):AutoFit()
oHoja:Columns( 2 ):AutoFit()

oHoja:Cells( 1, 1 ):Value := "
OLE desde FW"
oHoja:Cells( 1, 1 ):Font:Size := 16
oHoja:Range( "
A1:B1" ):HorizontalAlignment := 7

oHoja:Cells( 1, 1 ):Select()
oExcel:Visible := .T.

oHoja:End()
oExcel:End()

RETURN

//--------------------------------------------------------------------

STATIC PROCEDURE WORD97()

LOCAL oWord, oTexto

oWord:=TOleAuto():New( "
Word.Application" )

oWord:Documents:Add()

oTexto := oWord:Selection()

oTexto:Text := "
OLE desde FW"+CRLF
oTexto:Font:Name := "
Arial"
oTexto:Font:Size := 48
oTexto:Font:Bold := .T.

oWord:Visible := .T.
oWord:WindowState := 1 // Maximizado

oTexto:End()
oWord:End()

RETURN

//--------------------------------------------------------------------

STATIC PROCEDURE IEXPLORER()

LOCAL oIE

oIE:=TOleAuto():New( "
InternetExplorer.Application" )

oIE:Visible := .T.

oIE:Navigate( "
http://www.fivetech.com" )

oIE:End()

RETURN

//--------------------------------------------------------------------

STATIC PROCEDURE OUTLOOK()

LOCAL oOL, oLista, oMail, i

oOL := TOleAuto():New( "Outlook.Application.9" )

IF Ole2TxtError() != "S_OK"

Alert("Outlook 2000 no est? disponible.", "Error")

ELSE

oMail := oOL:CreateItem( 0 ) // olMailItem

FOR i := 1 TO 10
oMail:Recipients:Add( "Contacto" + LTRIM( STR( i, 2 ) ) + ;
"<contacto" + LTRIM( STR( i, 2 ) ) + "@servidor.com>" )
NEXT

oLista := oOL:CreateItem( 7 ) // olDistributionListItem
oLista:DLName := "Prueba de lista de distribuci?n"
oLista:Display( .F. )
oLista:AddMembers( oMail:Recipients )
oLista:Save()
oLista:Close( 0 )

oMail:End()
oLista:End()
oOL:End()

ENDIF

RETURN
*/

 
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: Google [Bot] and 89 guests