salvando xls como csv com o libreoffice calc

20

Estou usando o LibreOffice 3.5.7.2 Build ID: 350m1 (Build: 2) e gostaria de executar o LibreOffice calc a partir do terminal para abrir um documento .xls e enviar para .csv. Eu posso fazer isso através da GUI, apenas abrindo o arquivo xls e salvando como csv e especificando o delimitador, mas eu gostaria de poder fazer isso através do terminal.

Pesquisa que fiz:

quando eu corro

> man libreoffice

Eu recebo:

SYNOPSIS
       libreoffice  [--accept=accept-string]  [--base]  [--calc] [--convert-to
       output_file_extension[:output_filter_name]

que possui um comando --convert-to output, mas não sei exatamente como seria um exemplo disso, tentei:

libreoffice --convert-to csv:writer_csv_Export --outdir /Data/ *.xls

como https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/vi menciona, mas não está funcionando.

Eduardo Dennis
fonte
1
libreoffice --headless --convert-to csv --outdir somedir *.xlsparece funcionar. :writer_csv_Exportparece ser desnecessário e também pode ser um problema que /Data/significa um diretório chamado Datana raiz do sistema de arquivos, não no diretório inicial. Apenas omita --outdir DIRe você obterá a saída no diretório atual.
chronitis

Respostas:

31

libreoffice --headless --convert-to csv --outdir somedir *.xls parece funcionar.

--headless impede que o Libreoffice abra uma janela, então ele apenas converte seus arquivos e depois sai.

:writer_csv_Exportdepois csvparece desnecessário.

Também pode ser um problema que /Data/significa um diretório chamado Dados na raiz do sistema de arquivos, não no diretório inicial. Apenas omita --outdir DIRe você obterá a saída no diretório atual.

Nota:

Feche o arquivo xls / xlsx antes de executar este comando. Se o arquivo for aberto, este comando não funcionará.

cronite
fonte
1
existe uma maneira de especificar delimeter na linha de comando? Ou seja, em vez de vírgula, tubo?
Eduardo Dennis
1
Há um bug realce para isso, então, presumivelmente, não -> libreoffice.org/bugzilla/show_bug.cgi?id=68786
chronitis
ok nenhum problema, espero que eles corrigi-lo de que em breve :-D
Eduardo Dennis
3
Exporta apenas a primeira folha. Existe uma maneira de exportar todas as planilhas para arquivos separados?
Grzegorz Wierzowiecki 17/04
@GrzegorzWierzowiecki, conforme explicado nesta resposta ao Libreoffice, você precisará primeiro converter para XLSX e depois para CSV via xlsx2csv. Para todo o resto, existem macros: link - link
Avio