PDA

View Full Version : LibXL



Fernando Faria
24-Oct-2019, 09:54 AM
Olá pessoal,

Alguem está usando a DLL LibXL para ler/gerar arquivos no formato XLS/XLSX?
Preciso de alguns exemplos para ler uma planilha e importar para o dataflex.
Pesquisando aqui no fórum, eu encontrei a biblioteca szLibXL da starzen, mas no pacote deles só tem procedures/funções para criar uma planilha e eu preciso fazer o inverso.

Obrigado
Fernando

Samuel Pizarro
24-Oct-2019, 04:28 PM
Nunca usei chefe. Sorry
mas deve ter documentacao da dll. E as funções devem estar disponiveis na classe base COM dele.
Boa sorte

Fernando Faria
24-Oct-2019, 04:30 PM
Pois é...

Dei uma olhada na documentação mas não faço ideia de como integrar com o VDF.
O preço que a DAE está pedindo pela biblioteca deles é bem "salgado" e eu não tenho tanto conhecimento para criar as funções/procedures chamando as funções da DLL.

De qualquer forma, obrigado!

Samuel Pizarro
24-Oct-2019, 07:08 PM
a dll original deve ser um objeto COM.

Vc já trabalhou com objetos COM ou ActiveX antes com DF ?

Se sim , eh a mesma coisa... Importa a classe COM pelo wizard do studio.. ele vai trazudir todas as chamadas da dll em funcoes DF e classes DF.

depois eh só criar os objetos COM e executar seus metodos, conforme a documentacao do fabricante da dll.

A DAW simplesmente fez isso, e criou classes por cima da classe base, pra facilitar o nivel de programacao..

O mesmo principio eh utilizado em praticamente todos os componentes CodeJock (cCJGrid, cCJ***, etc.. ) existentes no DF hoje.

--- Edit ----
Esquece tudo que falei.. Eu nunca tinha ido atras da menina... Pensava que era OLE/COM,, mas nao eh.. eh dll pura..

Entao o negocio eh mais embaixo.. tem que trabalhar e implementar funcao por funcao da dll ,

Bastante trabalho..



[]s

Samuel Pizarro
24-Oct-2019, 09:39 PM
Dei uma olhada na lib da starZen..

http://starzen.com/doc/szlibxl/

Ele criou um wrapper COM em .Net, porém realmente ele implementou somente as funcoes necessarias para criar uma planilha e nada para lê-la. Nem perca mais tempo.. ela nao tem o que vc precisa.

Ou vc compra da DAW, ou vc cria a sua propria...

----
A 3ra opcao eh importar o as classes COM do proprio Excel.. Mas pra isso funcionar, precisa ter o excel instalado nas maquinas

O problema desse approach, eh que as classes sofrem evolucoes de acordo com a versao do excel instalado na maquina, e isso pode gerar algumas imcompatibilidades no futuro. principalmente se o cliente tiver versoes mais antigas do excel , da que vc utilizou parar gerar as classes com.

[]s e boa sorte

Fernando Faria
25-Oct-2019, 06:58 AM
Pois é.
Eu já tenho essa integração com o Excel, mas estamos mudando a suite e por isso compramos a DLL, mas esbarrei este problema de não ter funções/procedures para ler/exportar para XLS.
Entrei em contato com a DAE, mas o preço deles está caro, mesmo comprando apenas a Biblioteca em Dataflex.

Enfim, preciso ver o que eu faço.

De qualquer forma, obrigado!

Queiroz
25-Oct-2019, 08:49 AM
Fernando,

Para ler arquivos do Excel eu uso a msExcel9.pkg


Dentro da View crio um objeto igual abaixo



Object oExcel is a cExcel9
End_Object


[]´s
Queiroz

Fernando Faria
25-Oct-2019, 09:28 AM
Queiroz,

Nós não usamos mais o pacote do Office aqui na empresa, por isso não vai funcionar.
Eu já tinha essa integração quando usávamos o Office, mas como desinstalamos, não funciona mais.
Adquirimos essa outra DLL mas ela não é um objeto COM, então eu não consigo importar e criar uma classe nova dentro do VDF.

Queiroz
25-Oct-2019, 09:59 AM
Fernando,

estava olhando o site e lá fala que lê e escreve.


"LibXL is a library that can read and write Excel files.
It doesn't require Microsoft Excel and .NET framework, combines an easy to use and powerful features."


Vamos baixar aqui e ver se conseguimos algo.

Queiroz

Fernando Faria
25-Oct-2019, 10:33 AM
Sim, a DLL é completa, mas eu não consigo importar as classes para o VDF e usá-la
A starzen criou um wrapper, mas as funções que ele disponibilizou apenas criam um XLS a partir do VDF e eu preciso das duas vias, ou seja, tanto importar do XLS quando exportar para o XLS.
Como a DLL não é um objeto COM, o VDF não reconhece e não consegue criar o PKG para uso.

Estou "empacado" nisso. Compramos a DLL mas não consigo usar

Queiroz
25-Oct-2019, 01:01 PM
Fernando,

Baixei o produto, dentro dele tem exemplos com VB6, daí usando External_Function, consegui abrir um XLSX e ler o mesmo.

Não é complicado não, só dá um pouco de trabalho.

Em anexo o que fiz até o momento e o botão que fiz o teste.



Object oBTN_Open is a Button
Set Location to 6 25
Set Label to 'Open'
Procedure OnClick
Handle hoBook hoSheet hoFormat
Integer iRet
String sError
Move 0 to hoBook
Move (xlCreateBook()) to hoBook
Move (xlCreateXMLBook()) to hoBook

Move (xlBookLoad(hoBook,"C:\ArquivosImportacao\medicamentos.xlsx")) to iRet
Move (xlBookErrorMessage(hoBook)) to sError
If (Trim(sError)<>'ok') Send Info_Box sError iRet
Move (xlBookGetSheet(hoBook,0)) to hoSheet
Move (xlBookErrorMessage(hoBook)) to sError
If (Trim(sError)<>'ok') Send Info_Box sError iRet

String sValue
//Move (xlSheetCellFormat(hoSheet,1,1)) to hoFormat
Move (ToOEM(xlSheetReadStr(hoSheet,1,0,(&hoFormat)))) to sValue
//Move (xlSheetReadComment(hoSheet,1,1)) to sValue
Send Info_Box sValue

End_Procedure

End_Object



Queiroz

Fernando Faria
28-Oct-2019, 07:09 AM
Queiroz,

Tentei usar o teu exemplo mas está dando erro pra mim.
Se puder, me passe um telefone de contato para eu te ligar.
O meu, está na minha assinatura.

Abraço