A partir da linha de comando ou de um script, você pode converter (e fazer outras coisas também) da maneira que quiser com o LibreOffice.
Você pode converter e, em seguida, visualizar vários arquivos (Exemplo 1) ou abrir uma exibição e converter outros arquivos em segundo plano (Exemplo 2) em praticamente qualquer forma necessária.
Essas ações podem ser feitas em série ou em paralelo (como corrotinas). A chave é criar um novo ambiente de usuário e ligá-lo a uma porta tcp enquanto a conversão ou outro processo em segundo plano ocorre. Eles podem ser criados à vontade, desde que os locais e as portas do usuário estejam disponíveis.
Os dois exemplos a seguir são apresentados de forma a se prestarem a scripts.
Uma explicação de -env: UserInstallation 1 pode ser encontrada aqui e a referência para - accept pode ser encontrada na tabela aqui . A conexão pode ser um socket ou um pipe (requerendo um pipe nomeado). Um resumo das opções da linha de comando pode ser encontrado na documentação do LibreOffice . As configurações padrão para o LibreOffice são encontradas em bootstraprc 1 e sofficerc 2 .
A sintaxe pode parecer um pouco complexa na medida em que cadeias de caracteres são necessárias. Na minha opinião, as alterações não estão bem documentadas. Mas há uma vantagem nessa abordagem, pois ela pode ser distribuída através de uma rede, se necessário, para ativar um sistema de produção / processamento de documentos.
Exemplo 1. Converter Então Visualizar
A fonte a seguir ilustra em primeiro lugar como isso é feito em paralelo (exigindo uma ligação de usuário / porta separada para cada instância) e como isso é feito em série.
# My LibreOffice version is:
# $ libreoffice --version
# LibreOffice 4.2.8.2 420m0(Build:2)
# My files are in a local folder '.'
# $ ls .
# sample00.csv sample01.csv sample02.csv
# Parallel conversion: convert as many as you wish; to be done in parallel
# each instance will exit when completed. You can set UserInstallation
# to the location desired, as long as the user can access it, and you can
# use any tcp port you wish, as long as it is available. The location and
# port are created if they do not exist. Note that each location and port
# must be unique. The location ~/.loports/<port number> is a convenient
# construct. An explanation of -env:UserInstallation and --accept follows.
# -env:UserInstallation=</absolute/path/to/unique/location>
# changes the default user location that is found in bootstraprc.
# --accept
# 'socket,' use a socket
# 'host=0,' any host (also can use localhost or nnn.nnn.nnn.nnn).
# 'port=NNNN,' can be any available tcp port number.
# 'tcpNoDelay=1;' for uno connections, 0 for 200ms delay (default).
# Now do:
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8100" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample00.csv &
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8101" --accept="socket,host=0,port=8101,tcpNoDelay=1;" --convert-to ods --outdir . sample01.csv &
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8102" --accept="socket,host=0,port=8102,tcpNoDelay=1;" --convert-to ods --outdir . sample02.csv &
# ... and so on ...
# To open multiple views, do:
soffice --nologo --view sample00.ods sample01.ods sample02.ods &
# ... and so on ...
# Serial conversion: you can do serial conversion by sending each csv
# file to the same port but you must wait for it to finish first.
# Each conversion will exit when completed. Do something like:
( soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8100" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample00.csv &&
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8100" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample01.csv &&
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8100" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample02.csv &&
soffice --nologo --view sample00.ods sample01.ods sample02.ods ) &
# Quick note, when completed, check that your directory, in this case,
# ~/.loports, has been removed.
Exemplo 2: Ver e depois converter (em segundo plano)
É possível converter em segundo plano enquanto visualiza arquivos. Para cada instância do LibreOffice, você simplesmente precisa criar um novo usuário e ligar uma nova porta tcp ao usuário. O seguinte é um exemplo:
# Open a view:
soffice --nologo --view sample00.ods sample01.ods sample02.ods &
# Then convert in the background as you like:
( soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8101" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample00.csv &&
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8101" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample01.csv &&
soffice --headless "-env:UserInstallation=file:///home/$USER/.loports/8101" --accept="socket,host=0,port=8100,tcpNoDelay=1;" --convert-to ods --outdir . sample02.csv ) &
Os arquivos são convertidos em serial; como tal, eles podem ser ligados à mesma porta. Você notará que os arquivos que estão sendo visualizados também estão sendo convertidos em segundo plano. Ao converter em paralelo, no entanto, cada conversor deve estar vinculado a uma porta tcp exclusiva. É claro que você pode usar qualquer usuário / porta desde que eles sejam únicos e estejam disponíveis.
No encerramento ...
É possível organizar esse processo como você gosta, dentro de scripts, sem envolver outras planilhas ou software, e aproveitar ao máximo os extensos filtros de conversão que o LibreOffice tem a oferecer.
Opcionalmente, isso pode ser feito a partir do LibreOffice usando o ooBasic. Existem filtros de exportação de importação que são construídos em que podem ser acessados para esse propósito, para serem acionados por opções de menu, por exemplo.
Como um bônus adicional, se você fizer o seguinte após uma conversão em segundo plano (por exemplo, 2), isso forçará uma atualização do LibreOffice e carregará os arquivos recém-convertidos:
xdotool search --name sample00.ods windowactivate --sync key --clearmodifiers ctrl+shift+r &&
xdotool search --name sample01.ods windowactivate --sync key --clearmodifiers ctrl+shift+r &&
xdotool search --name sample02.ods windowactivate --sync key --clearmodifiers ctrl+shift+r
Mas você deve instalar o xdotool primeiro, faça: sudo apt-get install xdotool
.
Notas de rodapé
1 A configuração padrão UserInstallation é encontrada em / usr / lib / libreoffice / program / bootstraprc .
2 As configurações gerais são encontradas em / etc / libreoffice / sofficerc .