Esiste un modo, idealmente utilizzando la riga di comando, per convertire più file .csv in un foglio di calcolo .xls multifoglio?


14

Esiste un modo, idealmente utilizzando la riga di comando, per convertire più file .csv in un foglio di calcolo .xls multifoglio?

Se non esiste una soluzione cli, sarebbe bene sapere se esiste un'API che funziona, idealmente, in awk o pascal, ma, in mancanza, in qualsiasi cosa.


ssconvert, menzionato da Maythux, è un comando associato a Gnumeric, che verrà installato di default su un sistema Ubuntu Desktop, ma non su una versione server.
Arronical

Dato che Excel caricherà CSV in un .xlsfile che potresti semplicemente fare:cat *.csv > file.xls
ash

prova questo
Lety

1
ssconvert fa il trucco, perfettamente. Ciò di cui avevo bisogno era di avere ciascun file .csv in un foglio separato. L'uso di cat non ci riesce. ssconvert lo fa.
Peter Brooks,

@ash CSV e XLS sono formati diversi, catturando un sacco di CSV in un file e rinominandolo Xls non funzionerà affatto, dal momento che CSV non supporta più fogli in modo da fare solo un lungo CSV, e anche dal momento che CSV è un formato di testo in chiaro mentre xls è un formato binario
chiliNUT

Risposte:


16

Puoi usare il comando ssconvert .

ssconvert example.csv example.xls

Per farlo per più file devi fare un ciclo bash su file CSV e fare il lavoro. Ecco un suggerimento:

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

MODIFICARE:

Per convertire e unire in un singolo file xls puoi anche usare ssconvert.

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

o facilmente

ssconvert --merge-to=output.xls *.csv 

1
È di vitale importanza citare le variabili, poiché "$i" "${i%.*}".xls, altrimenti, qualsiasi nome di file contenente uno spazio interromperà il comando (e potenzialmente sovrascriverà un file non correlato).
Paddy Landau,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.