Как разбить файл электронной таблицы ODS на CSV-файлы на листе на терминале?
Я хотел бы разбить электронную таблицу (ods или xlsx) на несколько файлов CSV, по одному для каждого листа в электронной таблице.
Я хотел бы сделать это без запуска графического приложения и желательно в один слой.
Есть идеи?
Хотя связанный дубликат обеспечивает возможное решение в одном из ответов (не в принятом) и был полезен. Решение не работает с файлами ODS, как я и просил, и я считаю вопрос достаточно разным.
3 ответа
Что ж, libreoffice
может конвертировать документы из скрипта (т.е. в режиме без головы без открытия графического интерфейса). Чтобы преобразовать любой формат электронной таблицы в CSV, его простейшая форма будет выглядеть следующим образом:
libreoffice --convert-to csv PATH/TO/YOUR.ODS
Однако это просто берет первый лист вашего документа и преобразует его, игнорируя все остальные. К сожалению, в нем также нет возможности выбрать лист для конвертации.
Поэтому нам понадобится внешний инструмент, такой как xlsx2csv. Это Python-скрипт с открытым исходным кодом (как 2, так и 3), который конвертирует файлы XLSX в CSV и поддерживает извлечение всех листов в отдельные файлы.
Ubuntu уже поставляется с установленным Python, но, возможно, вам нужно установить pip
во-первых, его менеджер пакетов. Я собираюсь на Python 3, но вы можете изменить все команды ниже, чтобы запустить его также с 2:
sudo apt install python3-pip
Тогда вы можете установить xlsx2csv
с pip3
в каталог пакетов вашего пользователя, используя
pip3 install --user xlsx2csv
После этого исполняемый скрипт можно найти в ~/.local/bin/xlsx2csv
,
Теперь, если у вас его еще нет в формате XLSX, давайте преобразуем эту электронную таблицу ODS с помощью libreoffice
:
libreoffice --convert-to xlsx PATH/TO/YOUR.ods
Тогда мы используем xlsx2csv
извлечь все листы. Это создаст папку OUTPUTFOLDER
и поместите все извлеченные SHEETNAME.csv
там:
~/.local/bin/xlsx2csv -a YOUR.xlsx OUTPUTFOLDER
С помощью xls2csv
(конвертировать .XLS) инструмент catdoc
установка пакета sudo apt install catdoc
:
xls2csv -b '
' EXCEL.xls | awk '{print >"sheet"NR}' RS='\n\n'
это xls2csv -b '
' EXCEL.xls
читает файл MS-Excel и помещает его содержимое в виде данных через запятую на стандартный вывод и с -b STRING
мы сообщаем листам, с какими символами (или строкой; где мы определили фактическую новую строку здесь) разграничить.
использование xlsx2csv
(конвертировать .XLSX); устанавливать sudo apt install xlsx2csv
:
xlsx2csv -s 0 EXCEL.xlsx |
awk '!/,/ { nextSheet++; next } { print >"sheet"nextSheet }'
-s 0
означает распечатать все листы.
Взгляни на
ssconvert -O 'separator=:: format=raw quoting-mode=never' -S x.ods out%n.txt
\ Спасибо {Bruni}
-O 'separator= format= ...'
используется для контроля деталей формата csv-S
создать отдельный выходной файл для каждого листа