Existe uma maneira, idealmente usando a linha de comando, de converter vários arquivos .csv em uma planilha .xls com várias folhas?

14

Existe uma maneira, idealmente usando a linha de comando, de converter vários arquivos .csv em uma planilha .xls com várias folhas?

Se não houver uma solução cli, seria bom saber se existe uma API que funcione idealmente em awk ou pascal, mas, na sua falta, em praticamente tudo.

Peter Brooks
fonte
ssconvert, mencionado por Maythux, é um comando associado ao Gnumeric, que será instalado por padrão em um sistema Ubuntu Desktop, mas não em uma versão de servidor.
Arronical 17/02
Dado o fato de o Excel carregar CSV em um .xlsarquivo que você pode simplesmente fazer:cat *.csv > file.xls
ash
tente isso #
Lety
1
ssconvert faz o truque, perfeitamente. O que eu precisava era ter cada arquivo .csv em uma planilha separada. Usar gato não consegue isso. ssconvert faz.
Peter Brooks
@ash csv e xls são formatos diferentes, catting um monte de csvs para um arquivo e renomeá-lo xls não funcionará, uma vez que o csvs não suporta várias planilhas, de modo que faria apenas um csv longo e também porque o csv é um formato de texto sem formatação xls é um formato binário
chiliNUT

Respostas:

16

Você pode usar o comando ssconvert .

ssconvert example.csv example.xls

Para fazer isso em vários arquivos, você deve fazer um loop bash sobre arquivos csv e fazer o trabalho. Aqui está uma dica:

for i in *.csv; do ssconvert "$i" "${i%.*}".xls; done

EDITAR:

Para converter e mesclar em um único arquivo xls, você ainda pode usar o ssconvert.

ssconvert --merge-to=output.xls file1.csv file2.csv ....

ou facilmente

ssconvert --merge-to=output.xls *.csv 
Maythux
fonte
1
É vital citar as variáveis, pois "$i" "${i%.*}".xls, caso contrário, qualquer nome de arquivo que contenha um espaço interromperá o comando (e potencialmente substituirá um arquivo não relacionado).
Paddy Landau