LibreOffice, como posso manter os zeros à esquerda durante a exportação usando a linha de comando?

2

Estou usando o LibreOffice 5.0.5.2 em um contêiner do Docker Ubuntu 15.10 para converter arquivos de planilha de entrada arbitrários em arquivos CSV canônicos:

/usr/lib/libreoffice/program/soffice.bin \
    --convert-to 'csv:Text - txt - csv (StarCalc):44,34,76,1,1/2/2/2/3/2,1031,true,false,true' \
    --outdir '/tmp/outgoing' \
    'incoming.csv'

Pelo que entendi a documentação , esta linha de comando deve converter fielmente as planilhas para um CSV, usando:

  • , como um separador de campo ("44")
  • " como um caractere de gabinete ("34")
  • UTF-8 como a codificação de entrada ("76")
  • inicie com a primeira linha no arquivo ("1")
  • formata as colunas 1, 2 e 3 como texto ("1/2/2/2/3/2"),
  • use o UTF-8 tem a codificação de saída ("1031")
  • cite todas as células de texto ("true")
  • não detecta números especiais ("falso")
  • salvar o conteúdo da célula conforme mostrado ("true")

Isso funciona bem, exceto pelas colunas que contêm determinado texto com zeros à esquerda. Por exemplo, se incoming.csv for isto:

"0123456789"

O arquivo exportado resultante é o seguinte:

123456789

Meu entendimento é que, se a coluna estiver marcada como texto em importação , isso será reter os zeros à esquerda e, em seguida, indo para o outro lado, marcando" citar todas as células de texto "em exportação manterá esses zeros preservados. Mas esse não parece ser o caso de algum conjunto de entradas.

Por exemplo, eles mantêm seus zeros à esquerda, o que presumo ser porque contêm caracteres não numéricos:

  • 0x3E
  • 0 123 456

Usando a linha de comando, como posso convencer o LibreOffice a manter os zeros à esquerda durante a exportação?

    
por bishop 17.09.2016 / 05:43

1 resposta

1

Finalmente, encontrei três fontes que me ajudam a colocá-lo em conjunto:

  1. link
  2. link
  3. link

O que está faltando no meu comando acima é --infilter , que instrui o LibreOffice nas configurações de importação . O sinalizador --convert-to especifica apenas as configurações export .

Este comando preserva totalmente os zeros à esquerda em todos os casos de teste. A mágica é o terminal true , que significa "citar todas as células de texto" e é equivalente à caixa de seleção do mesmo nome na caixa de diálogo de importação.

/usr/lib/libreoffice/program/soffice.bin \
    --convert-to 'csv:Text - txt - csv (StarCalc):44,34,76,1' \
    --infilter='CSV:44,34,76,1,,1031,true' \
    --outdir '/tmp/outgoing' 'incoming.csv'

Como observação, a ordem dos argumentos é importante: --outdir deve seguir os dois --infilter e --convert-to .

Além disso, parece que vários --infilter podem ser especificados para declarar as combinações e configurações específicas permitidas.

    
por 19.09.2016 / 23:09