Página 1 de 1

Conversão de Xls em DBF

Enviado: 06 Jan 2019 21:54
por lugab
Bom dia, pessoal

Achei o código abaixo aqui no fórum. Ele compila normal, mas na hora de executar da o erro da foto na função SaveAs().
Alguém sabe o que fazer ? Eu uso Hb32 console

Código: Selecionar todos

#define xlDbf3 8
*************
Function Main //  (Arq1,Arq2)
*************************
setmode(25,80)
clea
Arq1="D:\mmv3\test1.xls"           // "D:\mmv3\test1"
Arq2="D:\mmv3\TESTE9.dbf"       //"D:\mmv3\TESTE9" ** esse Arquivo sera criado em tempo de execucao
XLS2DBF( Arq1, Arq2 )
return nil

**************************************
FUNCTION XLS2DBF( cXlsName, cDbfName )
**************************************
*
* Purpose: convert an Excel spreadsheet to a dBase III+ table
*     but does not leave Excel open
*
  LOCAL oExcel := Win_OleCreateObject( "Excel.Application" )
  LOCAL oWorkBook, oSheet

  oWorkbook = oExcel:WorkBooks:Open( cXlsName )
 
  oSheet = oExcel:ActiveSheet

  oSheet:SaveAs( cDbfName, xlDbf3 ) 

  oWorkBook:Close( False )

  oExcel:Quit()
  oSheet := NIL
  oWorkBook := NIL
  oExcel := NIL

RETURN( NIL ) 
Feliz 2019 a todos !

Conversão de Xls em DBF

Enviado: 07 Jan 2019 00:31
por fladimir
Troca essa linha

Código: Selecionar todos

#define xlDbf3 8
por

Código: Selecionar todos

#define xlDbf3 56
e testa

Conversão de Xls em DBF

Enviado: 07 Jan 2019 00:50
por lugab
Valeu, Fladimir, executou e gerou o DBF....
Pena que o DBF gerado é corrompido, não da nem pra abrir. Pode ser a versão do DBF gerado... Tem alguma sugestão ??
F1 F2 F3 F4 F5 F6 F7 F8
Help Open Create Save Browse Utility Move Set
────────────────────────────────────────────────────────────────────────────
xDBU - O DBU 32 bits compilado com xHarbour
Error DBFNTX/1012 Corruption detected: TESTE9.DBF

Error at ...: DBUSEAREA(0) in Module:
Called from : NETUSE(109) in Module: DBUNET.PRG
Called from : DBU(427) in Module: DBU.PRG

Conversão de Xls em DBF

Enviado: 08 Jan 2019 00:12
por fladimir
Amigo desculpe, eu acabei confundindo...
É o seguinte vou explicar

O método SaveAs q vc usou recebe 2 parametros o primeiro é o nome do arquivo a ser salvo e o segundo é o tipo de arquivo

Eu vi q vc passou uma constante q esta definida como 8 e eu consultei no meus fontes pesquisando rapido por SAVEAS e vi q lá estava 56 e falei pra vc substituir e ai q ocasionou o erro q vc teve...

Vc vai entender...

O segundo parametro como eu disse é o tipo de arquivo, 56 = Excel Versao 8 (e não DBF), ai vc tentou abrir um arquivo q supostamente pensava ser DBF mas ele foi salvo como XLS ou seja não era isso q vc queria...

Ai vou passar um link com os tipos de arquivo q teriam q ser aceitos, mas o estranho é q lá consta o q vc usou como DBF mas não funcionou contigo né... ai já não saberia dizer o pq, mas veja q no link tem CSV e tb outros tipos de arquivo como outra versão de DBF o tipo 11 por exemplo é DBF versão 4 quem sabe alguma delas resolva.

Segue link