Importação de dados de Excel para DBF

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Importação de dados de Excel para DBF

Mensagem por Paulo_CPV »

Boa tarde!

Alguém do grupo me poderia tirar uma duvida a respeito sobre importação de dados de uma planilha Excel para um arquivo DBF.

A minha duvida e a seguinte: Tenho uma planilha Excel com 12 pastas e dentro delas eu tenho 16 celulas e eu quero importalas todas as pastas de uma vez só, tem como fazer isto? Com uma só pasta é de boa mas com 12 ao mesmo tempo nao estou conseguindo fazer.

Abraços,

Paulo
Jacareí/SP
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Importação de dados de Excel para DBF

Mensagem por alxsts »

Olá!

Veja este tópico no GitHub: hbole library demo/test code

Creio que vai ajudar.
[]´s
Alexandre Santos (AlxSts)
Paulo_CPV
Usuário Nível 3
Usuário Nível 3
Mensagens: 178
Registrado em: 07 Mar 2013 10:27
Localização: Jacarei/SP

Importação de dados de Excel para DBF

Mensagem por Paulo_CPV »

Boa tarde!

Para os amigos que estão me ajudando, estou colocando aqui parte do meu código que só importa uma pasta da planilha, gostaria que o código pegasse todas as pastas da planinha (da pasta "Jan" até "Dez") com as suas respectivas células que são 12. O que eu devo mudar neste código para que ele funcione?

Código: Selecionar todos

METHOD ImportaDB001() CLASS Arquivo

   LOCAL cNit001,cNit002,cNit003,cNit004  // Numero Nit
   LOCAL cMat001,cMat002,cMat003,cMat004  // Matricula
   LOCAL nVal001,nVal002,nVal003,nVal004  // Valor R$
   LOCAL cComp01,cComp02,cComp03,cComp04  // Competencia
   
   LOCAL cBase1 , cBase2 , cBase3     // Diretorios dos arquivos
   
   LOCAL rCont := 0 , nLin , nCol , oExcel , oPlanilha , oCelulas
   LOCAL i , sai := .T. , cAno , nItem , nPastas , nP
   
   cAno  := STR( YEAR( DATE() ) - 1 , 0 )

   cBase1 := ::BancoDadosExcel() + ALLTRIM(cAno) + "\" + ALLTRIM("Fluxo2013.xls")
   cBase2 := ::BancoDados()      + ALLTRIM("Db004.dbf")
   cBase3 := ::BancoDados()      + ALLTRIM("IndValor.cdx")
 
   oExcel := TOleAuto():New( "Excel.Application" )

   IF oExcel == NIL

      MsgStop('Excel não está instalado!','Erro')
      RETURN NIL

   ENDIF
   
   oPlanilha := oExcel:WorkBooks:Open( cBase1 )
   oExcel:Sheets("Jan"):Select()
   oPlanilha := oExcel:ActiveSheet()   
   oCelulas  := oExcel:Get( "ActiveSheet" )

   nLin := oCelulas:UsedRange:Rows:Count()
   nCol := oCelulas:UsedRange:Columns:Count()

   IF !FILE( ( cBase2 ) )

      ::AbrirArquivo( "Db0004" , "IndValor" , 4 , "Fluxo" )

   ELSE

      DELETE FILE &cBase2
      DELETE FILE &cBase3

      ::AbrirArquivo( "Db0004" , "IndValor" , 4 , "Fluxo" )

   ENDIF

   i := 2

   WHILE sai
   
      ++rCont
// Janela de andamento da importação      
      ImportaDados.progressbar_1.Value := INT( rCont / nLin * 100 )
      ImportaDados.label_4.Value := STR( INT( rCont / nLin * 100 ) ) + " %"
      ImportaDados.label_3.Value := STRZERO( i , 6 )
//-----------------------------------------------------------------
	  cComp01 := oSistema:FormatoDados(oCelulas:Cells(i , 1):Value)
      
      cNit001 := oSistema:FormatoDados(oCelulas:Cells(i , 2):Value)
      cMat001 := oSistema:FormatoDados(oCelulas:Cells(i , 3):Value)
      nVal001 := oSistema:FormatoDados(oCelulas:Cells(i , 4):Value)
//-----------------------------------------------------------------	  
	  cComp02 := oSistema:FormatoDados(oCelulas:Cells(i , 5):Value)
      
      cNit002 := oSistema:FormatoDados(oCelulas:Cells(i , 6):Value)
      cMat002 := oSistema:FormatoDados(oCelulas:Cells(i , 7):Value) 
      nVal002 := oSistema:FormatoDados(oCelulas:Cells(i , 8):Value)
//-----------------------------------------------------------------	  
	  cComp03 := oSistema:FormatoDados(oCelulas:Cells(i , 9):Value)
      
      cNit003 := oSistema:FormatoDados(oCelulas:Cells(i , 10):Value)
      cMat003 := oSistema:FormatoDados(oCelulas:Cells(i , 11):Value)
      nVal003 := oSistema:FormatoDados(oCelulas:Cells(i , 12):Value)
//------------------------------------------------------------------	  
	  cComp04 := oSistema:FormatoDados(oCelulas:Cells(i , 13):Value)
      
      cNit004 := oSistema:FormatoDados(oCelulas:Cells(i , 14):Value)
      cMat004 := oSistema:FormatoDados(oCelulas:Cells(i , 15):Value)
      nVal004 := oSistema:FormatoDados(oCelulas:Cells(i , 16):Value)
//------------------------------------------------------------------	  
	  cMat001 := ALLTRIM( STR( INT( VAL( cMat001 ) ) ) )
	  cMat002 := ALLTRIM( STR( INT( VAL( cMat002 ) ) ) )
	  cMat003 := ALLTRIM( STR( INT( VAL( cMat003 ) ) ) )
	  cMat004 := ALLTRIM( STR( INT( VAL( cMat004 ) ) ) )
//------------------------------------------------------------------
	  IF EMPTY( CComp01 )
	  
	    EXIT
		
	  ENDIF

      Fluxo->( DBAppend() )
	  
	  Fluxo->C_000 := cComp01
	  
      Fluxo->C_001 := oSistema:TiraMascaraNit( cNit001 )
      Fluxo->C_002 := cMat001
      Fluxo->C_003 := VAL( nVal001 )

	  IF ! EMPTY( cComp02 )
	  
		Fluxo->( DBAppend() )
	  
		Fluxo->C_000 := cComp02
	  
		Fluxo->C_001 := oSistema:TiraMascaraNit( cNit002 )
		Fluxo->C_002 := cMat002
		Fluxo->C_003 := VAL( nVal002 )
	  
	  ENDIF
	  
	  IF ! EMPTY( cComp03 )
      
		Fluxo->( DBAppend() )
	  
		Fluxo->C_000 := cComp03
	  
		Fluxo->C_001 := oSistema:TiraMascaraNit( cNit003 )
		Fluxo->C_002 := cMat003
		Fluxo->C_003 := VAL( nVal003 )
	  
	  ENDIF

	  IF ! EMPTY( cComp04 )
      
		Fluxo->( DBAppend() )
	  
		Fluxo->C_000 := cComp04
	  
		Fluxo->C_001 := oSistema:TiraMascaraNit( cNit004 )
		Fluxo->C_002 := cMat004
		Fluxo->C_003 := VAL( nVal004 )
	  
	  ENDIF
	  
	  i++

   END

   oExcel:ActiveWorkbook:Close()
   oExcel:Quit()
   
   FECHA_JANELA // Apaga janela de andamento

RETURN NIL
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Importação de dados de Excel para DBF

Mensagem por Toledo »

Amigo, acho que é só repetir o código das linhas 29 até 140, mudando o nome das pastas (Jan, Fev, Mar, etc) na linha 29.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Adalberto
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 01 Set 2007 01:09
Localização: Santa Cruz de la Sierra - Bolivia

Importação de dados de Excel para DBF

Mensagem por Adalberto »

Caros amigos, boa noite

Aprovecho la oportunidad de este post, se eu pego o codigo postado aqui, compilo e executo, roda certinho (para Janeiro), até con Excel do Office 2010, mais con Office 2013, nao funciona nada.

Por favor uma luz sobre este problema.

Muito obrigado a todos.

Adalberto
Responder