Есть ли способ, в идеале с помощью командной строки, конвертировать несколько файлов .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 

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