Exportar xBrowse Para Excel no funciona

Exportar xBrowse Para Excel no funciona

Postby karinha » Mon Oct 27, 2014 3:22 pm

Buenas señores:

Porque Cuando hago la Exportacíon para el excel, la máscara no funciona con Europe format?

Code: Select all  Expand view  RUN

#include 'fivewin.ch'
#include 'xbrowse.ch'

function Main()

   local oWnd, oBar, oBrw, nTotal:=0

   /*
   A. American format: "999,999,999.99"
   E. European format: "999.999.999,99"
   I. Indian   format: "99,99,999.99"
   */

   fwNumFormat( 'E', .t. )  // Italian format

   USE CUSTOMER

   DEFINE WINDOW ownd

   DEFINE BUTTONBAR oBar OF oWnd SIZE 80,32 2007

   DEFINE BUTTON OF oBar PROMPT 'Excel' ;
          ACTION MsgMeter( { |oMeter, oText, oDlg, lEnd | ;
          Export2Excel( oBrw, oMeter, oText, oDlg, @lEnd ) } )

   DEFINE BUTTON OF oBar PROMPT 'Quit'  ACTION WndMain():End()

   SET MESSAGE OF oWnd TO '' 2007

   @ 0,0 XBROWSE oBrw OF oWnd ALIAS 'CUSTOMER' AUTOCOLS CELL LINES

   // Salary/Salario
   //oBrw:aCols[10]:cEditPicture := "@E 9.999.999,99"

   oBrw:aCols[ 10 ]:bClrStd := {|| { iif( Field->Salary > 100000, CLR_HRED, CLR_HBLUE), CLR_GRAY } }
   oBrw:aCols[ 10 ]:nDataStrAlign := AL_RIGHT

   Porque Cuando hago la Exportacíon para el excel, la máscara no funciona con Europe format?
   oBrw:aCols[10]:bFooter = {|| TRANSFORM(Field->Salary, "@E 9.999.999,99") }  // aqui funciona
                                                                            // en el Excel, no funciona(muestra errado)
   oBrw:MakeTotals()
   oBrw:refresh()

   oBrw:CreateFromCode()

   oWnd:oClient      := oBrw

   ACTIVATE WINDOW oWnd

   CLOSE DATA

return nil

static function Export2Excel( oBrw, oMeter, oText, oDlg, lEnd )

   oBrw:ToExcel( { |n,t| oMeter:nTotal := t, ;
                         oMeter:Set( n ), ;
                         oText:SetText( Str(n) + '/' + Str(t) ), ;
                         oDlg:Update(), .t. } )

return nil
 


Gracias

Salu2
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Exportar xBrowse Para Excel no funciona

Postby joseluisysturiz » Tue Oct 28, 2014 1:35 am

Nose como funciona con exportacion directa desde xBrowse, ya que exporta a Excel con:

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

oExcel:Sheets("Hoja2"):Select(); oHoja := oExcel:ActiveSheet()

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

y para el formato de celda lo hago asi:

Code: Select all  Expand view  RUN

   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
 


cualquier ayuda que necesites con al exportacion a excel, tengo un modulo completo, saludos...
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

Re: Exportar xBrowse Para Excel no funciona

Postby karinha » Tue Oct 28, 2014 2:30 pm

Gracias José, porfa, envia ó muestra em módulo completo.

Email / skype: joao@pleno.com.br

El que no comprendo és que en el xBrowse los datos(Picture) se muetran corretos y en el Excel no.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Exportar xBrowse Para Excel no funciona

Postby joseluisysturiz » Tue Oct 28, 2014 4:47 pm

Espero te sirva, mi skype joseluisy, saludos... :shock:

Para exportar desde un Query(mysql) a Excel
Code: Select all  Expand view  RUN

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

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


desde Excel a una Tabla(mysql)
Code: Select all  Expand view  RUN

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=" + ClipValue2SQL( Val2Escape( oBook:Cells( nRow, 1 ):Value ) ) + ","
      cSql += "rep_num_reporte=" + ClipValue2SQL( oBook:Cells( nRow, 2 ):Value ) + ","
      cSql += "rep_equipo_cliente=" + ClipValue2SQL( Val2Escape( oBook:Cells( nRow, 3 ):Value ) ) + ","
      cSql += "rep_num_serial=" + ClipValue2SQL( Val2Escape( SUBST( cValToChar( oBook:Cells( nRow, 4 ):Value ), 1, 10 ) ) ) + ","
      cSql += "rep_num_llamada=" + ClipValue2SQL( oBook:Cells( nRow, 5 ):Value ) + ","
      cSql += "rep_preventivo=" + ClipValue2SQL( 1 ) + "," // SIEMPRE ES PREVENTIVO
//
      cSql += "rep_tiempo_viaje_inicio=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 7 ):Value, 1, 5 ) ) ) + ","
      cSql += "rep_tiempo_viaje_fin=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 7 ):Value, 7, 5 ) ) ) + ","
//
      cSql += "rep_tiempo_espera_inicio=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 8 ):Value, 1, 5 ) ) ) + ","
      cSql += "rep_tiempo_espera_fin=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 8 ):Value, 7, 5 ) ) ) + ","
//
      cSql += "rep_tiempo_rep_inicio=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 9 ):Value, 1, 5 ) ) ) + ","
      cSql += "rep_tiempo_rep_fin=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 9 ):Value, 7, 5 ) ) ) + ","
//
      cSql += "rep_localidad=" + ClipValue2SQL( Val2Escape( AllTrim( oBook:Cells( nRow, 10 ):Value ) +;
         ", " + AllTrim( oBook:Cells( nRow, 11 ):Value ) ) ) + ","
      cSql += "rep_codi_ingeniero=" + ClipValue2SQL( Val2Escape( oBook:Cells( nRow, 12 ):Value ) ) + ","
//
   IF LEN( oBook:Cells( nRow, 13 ):Value ) <= 50 // DESDE 1-50
      cSql += "rep_observa1=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 1, Len( oBook:Cells( nRow, 13 ):Value ) ) ) ) + ","

   ELSE
      cSql += "rep_observa1=" + ClipValue2SQL( Val2Escape( 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( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 51, Len( oBook:Cells( nRow, 13 ):Value ) ) ) ) + ","

   ELSE // DESDE 111-170
      cSql += "rep_observa2=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 51, 110 ) ) ) + ","
      cSql += "rep_observa3=" + ClipValue2SQL( Val2Escape( SUBST( oBook:Cells( nRow, 13 ):Value, 111, Len( oBook:Cells( nRow, 13 ):Value ) ) ) ) + ","

   ENDIF
//
      cSql += "rep_np1=" + ClipValue2SQL( Val2Escape( SUBST( cValToChar( oBook:Cells( nRow, 14 ):Value ), 1, 12 ) ) ) + ","
      cSql += "rep_np2=" + ClipValue2SQL( Val2Escape( SUBST( cValToChar( oBook:Cells( nRow, 15 ):Value ), 1, 12 ) ) ) + ","
//
      cSql += "rep_fch_emision=" + ClipValue2SQL( Date() ) + ","
// AUDITORIA
      cSql += "usuario=" + ClipValue2SQL( Val2Escape( "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
 
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

Re: Exportar xBrowse Para Excel no funciona

Postby karinha » Tue Oct 28, 2014 4:50 pm

Gracias José, mas no uso mySql aún.

Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: Exportar xBrowse Para Excel no funciona

Postby joseluisysturiz » Tue Oct 28, 2014 4:58 pm

karinha wrote:Gracias José, mas no uso mySql aún.

Saludos.

Bueno, si usas DBF es lo mismo, solo cambia la forma de usar los campo y listo, lo importante es que veas como llevar los datos a Excel y traerlos de Excel en tu caso a la DBF... :shock:
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

Re: Exportar xBrowse Para Excel no funciona

Postby karinha » Thu Oct 30, 2014 11:58 am

Buén dia,

Como puedo hacer para que el xBrowse tenga que asumir el formato numérico: moneda automaticamente?

Gracias, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7872
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 89 guests