page27
Outra dificuldade é que o campo DESCRIÇÃO às vezes ocupa mais de uma linha, bem como a quebra de uma nova UORG não ocorre sempre no começo da página.
Como resolvi?
Recorri a velha programação procedural.
Fiz uma macro em LibreOffice Basic no Calc, que examina o arquivo linha a linha e procura determinados padrões.
Assim, os padrões que me importavam foram colocados em um campo do tipo strings e sempre que encontrava um deles tomava uma decisão adequada.
No meu relatório, como exemplo, pude notar que sempre há uma palavra “UORG” ocupando as posições a partir da coluna 03, um campo “(“ em outra posição fixa e um campo com conteúdo “0000000000” na coluna 22.
A partir disso, consegui separar as informações por coluna no Calc, recorrendo sempre à função Mid do Basic.
Tive que tomar um cuidado adicional para as descrições que ocupavam mais de uma linha.
Fiz um código rápido, funcional e sujo - sem me preocupar se era a melhor forma de programar, mas que me atendeu exatamente como precisava.
Os principais recursos que usei foram a função MID, e os métodos: GetCellByPosition, setString e setValue.
A função MID - Mid (String, posição inicial, quantidade de caracteres), recupera parte de uma string.
O método GetCellByPosition (coluna, linha), localiza a célula da planilha.
O método setString(String), armazena na célula referenciada anteriormente pelo método GetCellByPosition um conteúdo do tipo String.
O método setValue(Número), armazena na célula referenciada anteriormente pelo método GetCellByPosition um conteúdo do tipo Numérico.
Como Fazer
tutorial
LibreOffice Magazine | Agosto 2015