Incompatibilidade entre Libreoffice 3 e 4 com OLE

Faço integração do LibreOffice via Delphi utilizando OLE. Essas rotinas já funcionam a mais de 10 anos e algumas são bem complexas. Entretanto com a chegada do LibreOffice 4, os programas pararam de funcionar por conta de um erro que não estou conseguindo solucionar.

O erro acontece quando eu tento gravar em nova Sheet criada em tempo de runtime.

Quando eu tento gravar valores em uma célula, o LibreOffice 4 dá erro de IndexOutOfBoundsException

Document.Sheets.CopyByName('Base', 'Nova, 4);
Planilha := Document.Sheets.GetByIndex(4);
Planilha.getCellByPosition(Col, Lin).String := Value;

Parece que a função getCellByPosition se perde ao tentar gravar na planilha recém criada.

O triste é que LibreOffice 3, a mesma rotina funciona perfeitamente e por conta desse erro, não posso atualizar o LibreOffice de mais de 50 usuários!

Alguém tem ideia de como resolver o problema?

Não é uma resposta ao seu problema, mas houve uma mudança de API na virada do 3.x para o 4.0: https://wiki.documentfoundation.org/ReleaseNotes/4.0#API_Changes

2 Likes

Olá, boa tarde, eu criei um componente para trabalhar com o scalc como se fosse um dataset

Segue o projeto no github
https ://github.com/Daniel09Fernandes/Component_OpenOffice_Calc

2 Likes