Я ищу способ конвертировать xlsx файлы в csv файлы в Linux.
Я не хочу использовать PHP / Perl или что-то подобное, так как я смотрю на обработку нескольких миллионов строк, поэтому мне нужно что-то быстрое. Я нашел программу в репозиториях Ubuntu под названием xls2csv, но она будет конвертировать только файлы xls (Office 2003) (которые я сейчас использую), но мне нужна поддержка более новых файлов Excel.
Любые идеи?
Ответы:
Приложение электронных таблиц Gnumeric поставляется с утилитой командной строки под названием ssconvert, которая может конвертировать различные форматы электронных таблиц:
Чтобы установить на Ubuntu:
Чтобы установить на Mac:
источник
for f in *.csv; do ssconvert "$f" "${f%.csv}.xlsx"; done
Метод LibreOffice, вероятно, мог обрабатывать другие форматы, но я не мог заставить его работать (он просто открывал пустой файл каждый раз, даже с--headless
аргументом).apt-get install gnumeric --no-install-recommends
. Единственным недостатком является то, что он выдает много предупреждений. GConf-WARNING **: Клиенту не удалось подключиться к демону D-BUS во время работы. Простойssconvert oldfile.xlsx newfile.csv > /dev/null 2>&1
сделает свое дело.-S
флаг писал несколько листов. Каждый идет в свой файл.ssconvert -O "separator=;" -T Gnumeric_stf:stf_assistant file.xlsx fd://1
.Вы можете сделать это с LibreOffice:
По неясным для меня причинам вам может потребоваться запустить это с помощью sudo. Вы можете заставить LibreOffice работать с sudo, не запрашивая пароль, добавив следующую строку в файл sudoers:
источник
/Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to csv $filename
работал на OS X для меня.--convert-to "csv:Text - txt - csv (StarCalc):44,34,76,1,1/1"
. См. Вики открытого офиса для деталей.Если у вас уже есть среда рабочего стола, то я уверен, что Gnumeric / LibreOffice будет работать хорошо, но на автономном сервере (таком как Amazon Web Services) им требуются десятки зависимостей, которые также необходимо установить.
Я нашел эту альтернативу Python:
https://github.com/dilshod/xlsx2csv
Потребовалось 2 секунды для установки и работает как шарм.
Если у вас есть несколько листов, вы можете экспортировать все сразу или по одному:
Он также ссылается на несколько альтернатив, встроенных в Bash, Python, Ruby и Java.
источник
IOError: [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/prettytable-0.7.2-py2.7.egg/EGG-INFO/top_level.txt'
). Теперь, когда я думаю об этом, я получил ту же ошибку сcsvkit
.xlsx2csv
пакет, поэтому вам не нужно устанавливать его вручную,easy_install
но вы можете использовать менеджер пакетов.sudo easy_install xlsx2csv
В bash я использовал эту команду libreoffice для преобразования всех моих файлов xlsx в текущем каталоге:
Он заботится о пробелах в имени файла.
Попробовал еще несколько лет спустя, и это не сработало. Этот поток дает несколько советов, но самым быстрым решением было запустить от имени пользователя root (или запустить
sudo libreoffice
). Не элегантно, но быстро.Используйте команду scalc.exe в Windows
источник
scalc.exe
а неlibreoffice
. У меня сегодня работала на текущей стабильной версии LO.Используйте CSVKIT
Для деталей проверьте их отличные документы
источник
Другой вариант - для удобства использовать R с помощью небольшой оболочки bash:
источник
Если в
.xlsx
файле много листов,-s
можно использовать флаг, чтобы получить нужный лист. Например:second_sheet.csv
будет содержать данные 2-го листа вmy_file.xlsx
.источник
Использовать приложение Gnumeric для работы с электронными таблицами, в котором утилита командной строки под названием ssconvert действительно очень просто:
и вы сделали!
источник
Если вы можете запустить командную строку Java, вы можете сделать это с помощью Apache POI HSSF Excel Extractor . У него есть
main
метод, который говорит, что это экстрактор командной строки . Этот, кажется, просто вываливает все. Они указывают на этот пример, который конвертируется в CSV . Вам придется скомпилировать его, прежде чем вы сможете запустить его, но он тоже имеетmain
метод, поэтому вам не нужно делать много кода как такового, чтобы заставить его работать.Другой вариант, который может сработать, но потребует некоторой работы на другом конце, состоит в том, чтобы заставить ваши файлы Excel поступать к вам в виде XML-данных Excel или электронной таблицы XML любого вызова MS, который форматирует в эти дни. Это откроет вам новый мир возможностей нарезать и нарезать кубиками так, как вы хотите.
источник
Как говорили другие,
libreoffice
может конвертировать файлы xls в csv. Проблемой для меня был выбор листа.Этот скрипт Python libreoffice отлично справляется с конвертацией одного листа в CSV.
Использование это:
Единственным недостатком (с моей стороны) является то, что
--headless
, похоже, не работает. У меня есть окно LO, которое появляется на секунду, а затем выходит.Это нормально для меня, это единственный инструмент, который делает работу быстро.
источник