LibreOffice Calc [RESOLVIDO]

1. LibreOffice Calc [RESOLVIDO]

Carlos Guedes
caduguedess

(usa Outra)

Enviado em 17/08/2015 - 13:57h

Boa tarde, pessoal.
Preciso organizar dados provenientes de um arquivo no formato PDF.
Copiei e colei os dados para uma planilha do LibreOffice Calc (aproximadamente 20 mil linhas).
O objetivo é obter três outras colunas, uma com o valor do lote, uma com o peso do lote e uma com o código do lote.
Para obter o valor do lote eu coloquei o $ como separador de colunas na hora de colar, então o número que estava após o $ foi separado em outra coluna, mas não estou conseguindo extrair a informação do peso do lote, pois ela está dentro de um texto. Também não consigo extrair o código do lote.
Abaixo vou colar um extrato da tabela contendo apenas 3 itens, cada item pode ter de 5 a 7 linhas, dependendo do tamanho da descrição:

0453.000001-9
0453.213.00000211-7
TRES ANÉIS, DE: OURO; CONTÉM: pedras; CONSTAM: amolgada(s), PESO LOTE:
10,43G (DEZ GRAMAS E QUARENTA E TRES CENTIGRAMAS)
R$ 623,00
0453.000002-7
0453.213.00001127-2
UMA ALIANÇA, UM ANEL, QUATRO BRINCOS, DE: OURO; CONSTAM:
amolgada(s), amassada(s), iniciais, inscrições, PESO LOTE: 5,20G (CINCO
GRAMAS E VINTE CENTIGRAMAS)
R$ 216,00
0453.000003-5
0453.213.00001223-6
UM COLAR, UMA PULSEIRA, DE: OURO BRANCO, OURO, PESO LOTE: 10,30G
(DEZ GRAMAS E TRINTA CENTIGRAMAS)
R$ 536,00

Se puderem me dar uma luz de como posso fazer isso seria ótimo.
Desde já, obrigado pela atenção.



  


2. MELHOR RESPOSTA

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 18/08/2015 - 00:10h

Tinha varias inconsistências no arquivo.txt (Linhas de cabeçalho das paginas, Erros de português, falta de palavras inteiras, falta de espaços e etc..) e logo nas palavras chaves, fugindo mais ainda do padrão.rsrs

Ainda bem que existe Expressões regulares :)

Ta na mão: http://we.tl/n1BPHJkVJS

OBS: Das quase 25 mil linhas tratadas, 18 linhas ficaram tão grandes que tiveram de ser quebradas em duas.


abs
---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---

3. Re: LibreOffice Calc

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 17/08/2015 - 14:57h

Olá,

Tô confuso.

Poderia postar o conteúdo da forma como disposto abaixo ?


Imagine que sua planilha/pdf tenha somente 2 linhas (titulos e valores). Como deseja a saída?


Coluna 1: Valor Coluna 1
Coluna 2: Valor Coluna 2
Coluna 3: Valor Coluna 3
Coluna 4: Valor Coluna 4
Coluna 5: Valor Coluna 5
Coluna 6: Valor Coluna 6
Coluna 7: Valor Coluna 7
Coluna 8: Valor Coluna 8

Poste tbm pfvr, usando a tag <code>, um exemplo real das 2 primeiras linhas (titulo e valor) do arquivo original (exatamente como está - CTRL C/CTRL V).

Abs,



---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


4. Re: LibreOffice Calc

Carlos Guedes
caduguedess

(usa Outra)

Enviado em 17/08/2015 - 15:33h

Acho que a melhor maneira de me expressar seria por meio de screenshots.
A primeira imagem é o arquivo PDF de onde copiei os dados.
A segunda imagem é a planilha com os dados colados.

https://uploaddeimagens.com.br/imagens/copiar-png--2
https://uploaddeimagens.com.br/imagens/colar-png--5


Desejo uma coluna com o código do lote, uma coluna com o valor do lote e uma coluna com o peso do lote.
Desejo o seguinte:

COLUNA 1 0453.000001-9 0453.000002-7 .....
COLUNA 2 623 216 .....
COLUNA 3 10,43 5,20 .....

Seguem abaixo as linhas referentes aos 2 primeiros lotes.
(Esse é um dos problemas, na hora de colar, cada lote ocupa várias linhas)
0453.000001-9
0453.213.00000211-7
TRES ANÉIS, DE: OURO; CONTÉM: pedras; CONSTAM: amolgada(s), PESO LOTE:
10,43G (DEZ GRAMAS E QUARENTA E TRES CENTIGRAMAS)
R$ 623,00
0453.000002-7
0453.213.00001127-2
UMA ALIANÇA, UM ANEL, QUATRO BRINCOS, DE: OURO; CONSTAM:
amolgada(s), amassada(s), iniciais, inscrições, PESO LOTE: 5,20G (CINCO
GRAMAS E VINTE CENTIGRAMAS)
R$ 216,00



5. Re: LibreOffice Calc [RESOLVIDO]

CASSIO FERRAZ
cassio88

(usa Ubuntu)

Enviado em 17/08/2015 - 15:38h

em PHP, eu faria assim:
a) salvar como txt
b) varrer o arquivo texto e obedecer ao seguinte:
- os primeiro treze caracteres são o campo 1
- daí, até chegar ao caractere antes de R$, é o campo 2
- localizar a vírgula, então até dois caracteres para a frente, é o campo 3 (valor)

e conforme varre o arquivo texto, vai alimentando a tabela no banco de dados

A sugestão do colega acima parece ser melhor que a minha, deve ser algo como incluir tags, transformar em XML e depois no arquivo desejado,





6. Re: LibreOffice Calc [RESOLVIDO]

Carlos Guedes
caduguedess

(usa Outra)

Enviado em 17/08/2015 - 16:17h

cassio88 escreveu:

em PHP, eu faria assim:
a) salvar como txt
b) varrer o arquivo texto e obedecer ao seguinte:
- os primeiro treze caracteres são o campo 1
- daí, até chegar ao caractere antes de R$, é o campo 2
- localizar a vírgula, então até dois caracteres para a frente, é o campo 3 (valor)

e conforme varre o arquivo texto, vai alimentando a tabela no banco de dados

A sugestão do colega acima parece ser melhor que a minha, deve ser algo como incluir tags, transformar em XML e depois no arquivo desejado,





Pois é, não sei como seria a programação.
Copiei o texto referente ao primeiro lote como exemplo, está na screenshot abaixo:

https://uploaddeimagens.com.br/imagens/texto-png--11

O pseudocódigo poderia ser:
Linha 1
Campo 1 (código) = caractere 1 até caractere 13
Campo 2 (descrição) = caractere 14 até a expressão "PESO LOTE:" que acabaria no caractere x
Campo 3 (peso) = caractere x+1 até caractere ser igual à letra G que seria o caractere y
Campo 4 (peso por extenso) = caractere y+1 até caractere ser igual a ")" que seria o caractere z
Campo 5 (valor do lote) = caractere z+4 até 2 caracteres após a vírgula
pular linha



7. Re: LibreOffice Calc

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 17/08/2015 - 19:48h

Opa, desculpe a demora (o bicho ta pegando por aqui rs)

A única solução que vem a cabeça, e trazer pra para área que conheço (Shell Script). Deve existir uma solução mais bonita/profissional. Maaaaas esse tbm resolve.

OBS1:: Deixei o script bem flexivel e comentado para caso vc precise fazer modificações no futuro.
OBS2:: Tive que fazer alguns malabarismos pra fugir dos caracteres ocultos, então o batizei de tirazica.sh

Vamos lá...

1) Copie do pdf e ao invés de colar no Calc, cole num editor de texto qualquer e salve o arquivo. (daqui pra frente vamos chamá-lo de arquivo.txt, mas vc pode dar o nome que quiser, ok?)

2) Usando o terminal, crie o arquivo chamado tirazica.sh
nano tirazica.sh 


3) Cole o conteúdo abaixo nele:
#!/bin/bash
#
# Script Criado para solucionar um problema do user @caduguedess do VOL.
#
# _____ _ ______
# |_ _(_)_ __ __ _|__ (_) ___ __ _
# | | | | '__/ _` | / /| |/ __/ _` |
# | | | | | | (_| |/ /_| | (_| (_| |
# |_| |_|_| \__,_/____|_|\___\__,_|
#
# Trata texto puro contaminado por caracteres ocultos e gera txt formatado.
#
# Utilização:
# ./tirazica.sh arquivo_entrada arquivo_final

# ********************************************************
# Variáveis
txt=$1
tmp='/tmp/arq_temp1'
final=$2
# ********************************************************

# Trata o arquivo de texto puro, adionando quebras linhas, que usaremos como separador de blocos
sed -r '/,[0-9]{2}$/ s/$/\n/g' $txt > $tmp

# Montando cabeçalho/colunas do arquivo final
echo "LOTE+DESCRIÇÃO+PESO+PESO POR EXTENSO+VALOR" > $final
clear

# Incio do Loop
for i in $(seq 1 $(sed -n '/^$/p' $tmp | wc -l))
do sed -rn '1,/^$/ p' $tmp | fmt | paste -s | sed 's/\s/\n/2;s/PESO LOTE:/\n/;s/R\$/\n&/;s/([A-Z]/\n&/g' | tr "\n" "+" | sed 's/$/\n/' >> $final
sed -i '1,/^$/d' $tmp
echo "Montando linha número $i....."
clear
done

# Removendo arquivo temporario.
rm -f $tmp

echo -e "\n\n\n Processo concluído com sucesso ! \n Foram criadas $(wc -l $final | sed 's/[^0-9]//g') Linhas/Registros (Contando o Cabeçalho). \n Agora, basta importar para o Calc e definir o caratere '+' como separador de campos.\n\n Obrigado!\n\n"


4) Salve e saia ( CTRL + X, depois S ou Y, depois ENTER)

5) Dê permissão de execução:
sudo chmod +x tirazica.sh 


6) Execute o script, passando como parametro o arquivo.txt e o nome para um arquivo de saida, por exemplo arquivo_tratado.txt
./tirazica.sh arquivo.txt arquivo_tratado.txt 


7) Pronto ! Agora basta vc copiar ou importar para o Calc/Excel e usar o caractere + como delimitador


Espero que ajude!

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


8. Re: LibreOffice Calc [RESOLVIDO]

Carlos Guedes
caduguedess

(usa Outra)

Enviado em 17/08/2015 - 22:08h


Obrigado pela ajuda, mas estou travado em um passo.
Meu sistema operacional é o Windows, por isso não sei como acessar o Terminal, creio que seria somente pelo Linux, como procedo pelo Windows?
Obrigado


9. Re: LibreOffice Calc

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 17/08/2015 - 22:19h

Putzzzz

Não sei fazer via windows. :(

Bom, temos 2 alternativas, uma boa e uma ruim pra vc.

Ruim:
Posta o arquivo.txt aqui que eu te envio o planilha montada.
Resolve seu problema, mas vc não aprenderá nada.

Boa:
Baixa um iso/live, boota pelo pen e faça vc mesmo.
Alem de resolver, vc irá aprender e da proxima vc nao depende mais de ninguém. :)

Is up to you!

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


10. Re: LibreOffice Calc [RESOLVIDO]

Carlos Guedes
caduguedess

(usa Outra)

Enviado em 17/08/2015 - 22:44h

Obrigado pela ajuda.
Vou precisar da sua ajuda dessa vez, mas vou estudar esse assunto e me aprofundar das próximas vezes.
Fiz upload do arquivo.txt
O link para o arquivo texto é esse

http://www.yourfilelink.com/get.php?fid=1105323


11. Re: LibreOffice Calc [RESOLVIDO]

Wellingthon Dias Queiroz - @tonyhts
tonyhts

(usa Arch Linux)

Enviado em 17/08/2015 - 23:09h

Blza!

Promessa é divida hein!?! Quero ver vc por aqui postando sobre o linux...


Vou fazer aqui e ja posto o link do arquivo pronto.

abs

---
Eu Acredito, que ás vezes são as pessoas que ninguém espera nada que fazem as coisas que ninguém consegue imaginar.

--- Mestre dos Mestres - Alan Turing ---


12. Re: LibreOffice Calc [RESOLVIDO]

Carlos Guedes
caduguedess

(usa Outra)

Enviado em 18/08/2015 - 16:37h

Obrigado pela força.
Imagino que tenha dado trabalho mesmo, quando copiei eu nem me toquei que tinha cabeçalho nas páginas.
Tentei executar a shell script usando o Cygwin, mas não consegui.
Expressões regulares que vc diz seria algo específico de shell script ou apenas termos que se repetem em um padrão específico dentro dos dados?
abs



  
01 02