altera ods para txt, com todas as colunas de ods distribuídas corretamente com delimitador de tabulação

0

Eu sei que perguntas semelhantes foram feitas, mas não parecem funcionar para mim. Eu tentei o odt2txt, unoconv e conversão para .csv em vez de .txt. Eu preciso encontrar uma maneira (dentro de um script bash) para alterar um arquivo ods para um arquivo txt, com todas as colunas de ods corretamente distribuído com delimitador de tabulação e linhas em lugares corretos também. Mas toda tentativa até agora converteu o arquivo incorretamente.

Obrigado antecipadamente

Eu daria um exemplo de entrada e saída, mas essencialmente eu só quero que eles pareçam iguais, mas com entrada sendo múltiplas colunas em um ods e saída tendo as mesmas colunas, mas como um arquivo de texto delimitado por tabulação.

Haverá algumas linhas vazias entre algumas colunas (caso isso seja algo que possa estar causando problemas)

    
por Giles 19.10.2016 / 00:23

1 resposta

1

Use por exemplo unoconv para convertê-lo em CSV e, em seguida, converter o CSV em colunas separadas por tabulações.

Aqui está um script Bash que usa unoconv e Python para isso:

#!/bin/bash
if [ $# -lt 1 -o "$1" = "-h" -o "$1" = "--help" ]; then
    exec >&2
    printf '\n'
    printf 'Usage: %s [ -h | --help ]\n' "$0"
    printf '       %s FILE.ods [ ... ] [ > output.txt ]\n' "$0"
    printf '\n'
    exit 0
fi

unoconv --stdout -f csv "$@" | python -c '
import sys
import csv
from string import maketrans
whitespace = maketrans("\t\r\n", "   ")
def fix(s):
    return str(s).translate(whitespace)
for row in csv.reader(sys.stdin):
    print("\t".join(map(fix, row)))'

Este é paranóico, pois garante que os campos não contenham guias ou novas linhas (eles serão substituídos por um espaço se ocorrerem) o que, de outra forma, confundiria a saída.

Se você salvar o acima (temporariamente) como ods2tsv , poderá instalá-lo usando

sudo install -o root -g root -m u=rwx,g=rx,o=rx ods2tsv /usr/bin/ods2tsv

e você pode usá-lo como, por exemplo.

ods2tsv somefile.ods > your.txt
    
por 19.10.2016 / 01:00