Página 1 de 1

Exportar xBrowse Para Excel não funciona

Enviado: 28 Out 2014 11:48
por Kapiaba

Exportar xBrowse Para Excel não funciona

Enviado: 14 Nov 2014 21:52
por rochinha
Amiguinhos,

Eu uso a seguinte função para criar uma saida para .XLS no TwBrowse. Eu não uso o TwBrowse original da Fivewin e sim a versão de Hernan.

Para usar basta criar uma chamada em qualquer parte de sua tela passando para a função o objeto que esta suportando o browse, um titulo, .t. ou .f. se previsualiza e um vetor das colunas que deseja que saia no arquivo.

Supondo que voce tenha 20 colunas mas quer apresentar somente algumas, bastará passar o nome delas no vetor aColunas.

Código: Selecionar todos

function ReporteXLS( oRPTLbx, cTitle, lPreview, cTitle2, aColunas )
   local oRpt
   local nRecNo := If( Upper( oRPTLbx:cAlias ) != "ARRAY", ( oRPTLbx:cAlias )->( RecNo() ), 0 )
   local aData  := Eval( oRPTLbx:bLine )
   local n
   local nCharWidth
   local oRPTFont1, oRPTFont2, oRPTFont3
   public nCreditos := 0
   public nDebitos  := 0
   nCharWidth := GetTextWidth( 0, "B", If( oRPTLbx:oFont != nil, oRPTLbx:oFont:hFont, 0 ))
   DEFAULT cTitle := oRPTLbx:oWnd:cTitle, lPreview := .t.
   sColunas := ""
   //FOR nPos = 1 TO LEN(aColunas)
   //    if aColunas[nPos] <> "0"
   //       sColunas := sColunas + str(nPos,1) + ";"
   //    endif
   //NEXT
   CursorWait()
   Eval( oRPTLbx:bGoTop )
   oExcel := TOleAuto():New( "Excel.Application" )
   oExcel:WorkBooks:Add()
   oPasta  := oExcel:Get( "ActiveSheet" )
   nRow := 1
   for nCol := 1 TO len( oRPTLbx:aHeaders )
       oPasta:Columns( nCol ):Font:Bold := .T.
       if aColunas <> nil
          if aColunas[ nCol ] = "0"
             loop
          else
             oPasta:Cells( nRow, nCol ):Value := oRPTLbx:aHeaders[ nCol ]
          endif
       endif
   next
   nRow := 2
   do while .t.
      aData := Eval( oRPTLbx:bLine )
      for nCol := 1 to len( oRPTLbx:aHeaders )
          oPasta:Columns( nCol ):Font:Bold := .F.
          if aColunas <> nil
             if aColunas[ nCol ] = "0"
                loop
             else
                oPasta:Cells( nRow, nCol ):Value := aData[ nCol ]
             endif
          endif
      next
      //oRPTLbx:Skip( 1 )
      nRow := nRow + 1
      skip
      if Eof()
         exit
      endif
   enddo
   for nCol := 1 to len( oRPTLbx:aHeaders )
       oPasta:Columns( nCol ):AutoFit()
   next
   oExcel:Visible := .T.
   oPasta:End()
   oExcel:End()
   CursorArrow()
   if Upper( oRPTLbx:cAlias ) != "ARRAY"
      ( oRPTLbx:cAlias )->( DbGoTo( nRecNo ) )
   endif
   oRPTLbx:Refresh()
   return nil