Czy istnieje sposób, najlepiej za pomocą wiersza polecenia, na konwersję wielu plików .csv w jeden arkusz kalkulacyjny .xls zawierający wiele arkuszy?

14

Czy istnieje sposób, najlepiej za pomocą wiersza polecenia, na konwersję wielu plików .csv w jeden arkusz kalkulacyjny .xls zawierający wiele arkuszy?

Jeśli nie ma rozwiązania cli, dobrze byłoby wiedzieć, czy istnieje interfejs API, który działa, najlepiej w awk lub pascal, ale w przeciwnym razie w całkiem dobrze.

Peter Brooks
źródło
ssconvert, wspomniany przez Maythux, jest poleceniem towarzyszącym Gnumericowi, które zostanie domyślnie zainstalowane w systemie Ubuntu Desktop, ale nie w wersji serwerowej.
Arroniczny
Biorąc pod uwagę fakt, że Excel załaduje CSV do .xlspliku, możesz po prostu zrobić:cat *.csv > file.xls
ash
spróbuj tego
Lety
1
ssconvert doskonale sobie radzi. Potrzebowałem tylko pliku .csv w osobnym arkuszu. Używanie kota tego nie osiąga. robi ssconvert.
Peter Brooks,
@ash csv i xls mają różne formaty, catting kilka plików csv do pliku i zmiana jego nazwy xls w ogóle nie będzie działać, ponieważ csvs nie obsługuje wielu arkuszy, więc utworzy tylko jeden długi csv, a także ponieważ csv jest formatem zwykłego tekstu, podczas gdy xls to format binarny
chiliNUT

Odpowiedzi:

16

Możesz użyć polecenia ssconvert .

ssconvert example.csv example.xls

Aby to zrobić dla wielu plików, musisz wykonać pętlę bash nad plikami csv i wykonać zadanie. Oto wskazówka:

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

EDYTOWAĆ:

Aby przekonwertować i scalić w jeden plik xls, nadal możesz użyć ssconvert.

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

lub łatwo

ssconvert --merge-to=output.xls *.csv 
Maythux
źródło
1
Ważne jest, aby zacytować zmienne, ponieważ "$i" "${i%.*}".xlsw przeciwnym razie każda nazwa pliku zawierająca spację złamie polecenie (i potencjalnie nadpisze niepowiązany plik).
Paddy Landau