Existe-t-il un moyen, idéalement en utilisant la ligne de commande, de convertir plusieurs fichiers .csv en une seule feuille de calcul .xls à plusieurs feuilles?

14

Existe-t-il un moyen, idéalement en utilisant la ligne de commande, de convertir plusieurs fichiers .csv en une seule feuille de calcul .xls à plusieurs feuilles?

S'il n'y a pas de solution cli, il serait bon de savoir s'il existe une API qui fonctionne, idéalement, awk ou pascal, mais, à défaut, dans à peu près n'importe quoi.

Peter Brooks
la source
ssconvert, mentionné par Maythux, est une commande associée à Gnumeric, qui sera installée par défaut sur un système Ubuntu Desktop, mais pas sur une version serveur.
Arronical
Étant donné qu'Excel chargera CSV dans un .xlsfichier, vous pouvez simplement le faire:cat *.csv > file.xls
ash
essayez ceci
Lety
1
ssconvert fait parfaitement l'affaire. Ce dont j'avais besoin était d'avoir chaque fichier .csv dans une feuille séparée. Utiliser le chat n'y parvient pas. ssconvert le fait.
Peter Brooks
@ash csv et xls sont des formats différents, regroupant un tas de csvs dans un fichier et le renommant xls ne fonctionneront pas du tout, car les csvs ne prennent pas en charge plusieurs feuilles, il ne ferait donc qu'un seul csv long, et aussi puisque csv est un format en clair alors que xls est un format binaire
chiliNUT

Réponses:

16

Vous pouvez utiliser la commande ssconvert .

ssconvert example.csv example.xls

Pour le faire pour plusieurs fichiers, vous devez faire une boucle bash sur les fichiers csv et faire le travail. Voici un indice:

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

ÉDITER:

Pour convertir et fusionner en un seul fichier xls, vous pouvez également utiliser ssconvert.

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

ou facilement

ssconvert --merge-to=output.xls *.csv 
Maythux
la source
1
Il est essentiel de citer les variables, car "$i" "${i%.*}".xlssinon, tout nom de fichier contenant un espace cassera la commande (et écrasera potentiellement un fichier non lié).
Paddy Landau