Я хотел бы разделить электронную таблицу (передозировки или xlsx) в несколько файлов CSV, один для каждого листа в электронной таблице.
Я хотел бы сделать это, не запуская графическое приложение и предпочтительно в одном лайнере.
Какие-либо идеи?
Хотя связанный дубликат предоставляет возможное решение в одном из ответов (не в принятом) и был полезен. Решение не работает с файлами ODS, как я запросил, и я рассматриваю вопрос достаточно отличаться.
Ну, 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
Взгляните на
ssconvert -O 'separator=:: format=raw quoting-mode=never' -S x.ods out%n.txt
\ спасибо {Бруни}
-O 'separator= format= ...'
используется для управления деталями формата csv -S
создать отдельный выходной файл для каждого листа Используя 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
средства печатают все листы.