Clipper On Line • Ver Tópico - Obter dados de uma Planilha Excel

Obter dados de uma Planilha Excel

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Obter dados de uma Planilha Excel

Mensagempor carlos_dornelas » 10 Out 2006 10:32

Pessoal, é possível com a Minigui abrir uma planilha Excel e obter seus dados?

Grato

Antonio Carlos - Curitiba
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes

Mensagempor rochinha » 04 Nov 2006 12:52

Amiguinho

A MiniGUI não possui este recurso e simo xHarbour, mas para trabalhar diretamente com estes recursos voce devera saber como conectar os recursos ao seu sistema que talvez use OLE ou acesso a Activex.

Com Haroubr voce poderia usar TAutoOle para isto:

Neste exemplo voce usa automação OLE para gravar uma planilha Excel com alguns dados:

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


Ja neste exemplo ele faz a leitura e gravação de uma pequena planilha:

*
* ----------------------------------------------------------------
*
FUNCTION OLEExcel()
   LOCAL oWnd, oMenu
   MENU oMenu
      MENUITEM "&Probar Excel y DBF"
      MENU
         MENUITEM "&Leer SIGLAS.XLS" ACTION LEER()
         MENUITEM "&Enviar SIGLAS.DBF a Excel" ACTION ENVIAR() WHEN FILE( "SIGLAS.DBF" )
         SEPARATOR
         MENUITEM "&Salir" ACTION oWnd:End()
      ENDMENU
   ENDMENU
   DEFINE WINDOW oWnd FROM 0,0 TO 20,70 MENU oMenu TITLE "Probar Excel y DBF"
   ACTIVATE WINDOW oWnd MAXIMIZED
   RETURN

FUNCTION LEER()
   LOCAL oExcel, oHoja, nRows, nCols
   LOCAL aCampos:={}, nRow, nCol
   oExcel := TOleAuto():New( "Excel.Application" )
   oExcel:WorkBooks:Open(SFN2LFN(cFilePath(GetModuleFileName(GetInstance()))+"SIGLAS.xls"))
   oHoja := oExcel:Get( "ActiveSheet" )
   nRows := oHoja:UsedRange:Rows:Count()
   nCols := oHoja:UsedRange:Columns:Count()
   FOR nCol := 1 TO nCols
      IF ValType( oHoja:Cells( 2, nCol ):Value ) = "C"
         AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "C", 80, 0 } )

      ELSEIF ValType( oHoja:Cells( 2, nCol ):Value ) = "N"
         AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "N", 15, 4 } )

      ELSEIF ValType( oHoja:Cells( 2, nCol ):Value ) = "L"
         AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "L", 1, 0 } )

      ELSEIF ValType( oHoja:Cells( 2, nCol ):Value ) = "D"
         AADD( aCampos, { oHoja:Cells( 1, nCol ):Value, "D", 8, 0 } )
      ENDIF
   NEXT
   DBCREATE( "EXCEL", aCampos )
   USE "EXCEL" NEW
   FOR nRow := 2 TO nRows
      APPEND BLANK
      FOR nCol := 1 TO nCols
         FIELDPUT( nCol, oHoja:Cells( nRow, nCol ):Value )
      NEXT
   NEXT
   CLOSE DATABASES
   oExcel:Quit()
   oHoja:End()
   oExcel:End()
   MsgInfo( "Foi criado o arquivo EXCEL.DBF" )
   RETURN

FUNCTION ENVIAR()
   LOCAL oExcel, oHoja
   LOCAL nRow := 1, nCol
   oExcel := TOleAuto():New( "Excel.Application" )
   oExcel:WorkBooks:Add()
   oHoja := oExcel:Get( "ActiveSheet" )
   USE "SIGLAS" NEW
   FOR nCol := 1 TO FCOUNT()
      oHoja:Cells( nRow, nCol ):Value := FieldName( nCol )
   NEXT
   DO WHILE .NOT. EOF()
      nRow++
      FOR nCol := 1 TO FCOUNT()
         oHoja:Cells( nRow, nCol ):Value := FieldGet( nCol )
      NEXT
      SKIP
   ENDDO
   FOR nCol := 1 TO FCOUNT()
      oHoja:Columns( nCol ):AutoFit()
   NEXT
   CLOSE DATABASES
   oExcel:Visible := .T.
   oHoja:End()
   oExcel:End()
   RETURN


Isto já te ajuda?

@braços :?)
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Mensagempor carlos_dornelas » 06 Nov 2006 14:34

E como ajuda! Muito obrigado, vou testar.

[]s

Antonio Carlos
carlos_dornelas
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 392
Data de registro: 25 Ago 2004 21:54
Curtiu: 0 vez
Mens.Curtidas: 10 vezes




Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro