Есть ли способ, в идеале с помощью командной строки, конвертировать несколько файлов .csv в одну многолистную электронную таблицу .xls?

14

Есть ли способ, в идеале с помощью командной строки, конвертировать несколько файлов .csv в одну многолистную электронную таблицу .xls?

Если нет решения для Cli, было бы неплохо узнать, есть ли API, который работает, в идеале, в awk или pascal, но, если это не удастся, во всяком случае хорошо.

Питер Брукс
источник
ssconvert, упомянутый Maythux, является сопутствующей командой Gnumeric, которая будет установлена ​​по умолчанию в системе Ubuntu Desktop, но не в версии сервера.
Arronical
Учитывая тот факт , 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 
Maythux
источник
1
Важно заключить в кавычки переменные, так как в "$i" "${i%.*}".xlsпротивном случае любое имя файла, содержащее пробел, прервет команду (и, возможно, перезапишет несвязанный файл).
Пэдди Ландау