Чи існує спосіб, в ідеалі за допомогою командного рядка, конвертувати декілька файлів .csv в одну багатолистову таблицю .xls?


14

Чи існує спосіб, в ідеалі за допомогою командного рядка, конвертувати декілька файлів .csv в одну багатолистову таблицю .xls?

Якщо не існує рішення для cli, було б добре знати, чи існує API, який працює в ідеалі, awk або pascal, але, якщо цього не зробити, то досить добре.


ssconvert, згаданий Maythux, - це супутня команда Gnumeric, яка буде встановлена ​​за замовчуванням у системі Ubuntu Desktop, але не на серверній версії.
Аронічний

З огляду на той факт , Excel буде завантажувати CSV в .xlsфайл , який ви могли б просто зробити:cat *.csv > file.xls
ясен

спробуйте це
Lety

1
ssconvert робить трюк ідеально. Мені потрібно було мати кожен .csv файл на окремому аркуші. Використання кота цього не досягає. ssconvert робить.
Пітер Брукс

@ash csv та xls - це різні формати, котячи кучу csvs до файлу та перейменуючи його на xls, звичайно не працювати, оскільки csvs не підтримує декілька аркушів, тому він би просто створив один довгий csv, а також оскільки csv - це формат простого тексту, тоді як xls - це двійковий формат
chiliNUT

Відповіді:


16

Можна використовувати команду ssconvert .

ssconvert example.csv example.xls

Щоб зробити це для декількох файлів, вам потрібно зробити цикл bash над файлами csv і виконати роботу. Ось підказка:

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

Редагувати:

Для перетворення та об'єднання в один єдиний файл xls ви все ще можете використовувати ssconvert.

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

або легко

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

1
Важливим є цитування змінних, оскільки в "$i" "${i%.*}".xlsіншому випадку будь-яке ім'я файлу, що містить пробіл, порушить команду (і, можливо, замінить непов'язаний файл).
Падді Ландау
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.