Página 1 de 1
Importação de dados de Excel para DBF
Enviado: 15 Nov 2014 15:32
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
Importação de dados de Excel para DBF
Enviado: 15 Nov 2014 19:02
por alxsts
Olá!
Veja este tópico no GitHub:
hbole library demo/test code
Creio que vai ajudar.
Importação de dados de Excel para DBF
Enviado: 16 Nov 2014 15:35
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
Importação de dados de Excel para DBF
Enviado: 16 Nov 2014 21:40
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,
Importação de dados de Excel para DBF
Enviado: 23 Nov 2014 00:57
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