Гид по технологиям

Конвертация XLS в CSV из командной строки

• 5 min read • Инструменты • Обновлено 25 Nov 2025
Конвертация XLS в CSV — команды и сравнение
Конвертация XLS в CSV — команды и сравнение

Зачем конвертировать XLS в CSV

CSV — простой текстовый формат, который легко парсится в любом языке (Shell, Perl, Ruby, Python, Java). Если нужно загрузить данные в базу или выполнить массовую обработку, сначала конвертировать XLS в CSV часто быстрее и надёжнее, чем автоматизировать работу с двоечным форматом Excel.

Основные варианты и что учитывать

  • Формат XLS — бинарный формат старых версий Excel. Некоторые поля (даты, числа, кодировки, кавычки) требуют внимания при конвертации.
  • CSV не хранит несколько листов: каждый лист нужно сохранять в отдельный CSV.
  • Кодировка: у Excel часто используется cp1252; для UNIX часто требуется ISO-8859-1 или UTF-8.

catdoc — на C

catdoc — небольшая утилита на C для извлечения содержимого из файлов Office. Подходит, когда нужна простая и быстрая конвертация.

Установка

Скачайте исходники с сайта проекта и распакуйте в папке загрузок. Если возникают проблемы, можно использовать команды:

gunzip catdoc-0.94.2.tar.gz tar xvf catdoc-0.94.2.tar

Далее перейдите в каталог catdoc-0.94.2 и выполните:

./configure   
make  
makeinstall

Примечание: в некоторых системах команда установки может быть “make install”; в исходном примере использована запись без пробела.

Использование

Команда для преобразования Excel в CSV, рекомендуемая для catdoc:

xls2csv -x"Path_of_Your_XLS_File"-s cp1252 -d8859-1>"Path_of_Your_CSV_File"

Опции -s и -d указывают кодировки (source/destination). В примере исходная кодировка cp1252 (Microsoft), конечная — 8859-1 (Western European). Чтобы посмотреть доступные опции, используйте:

xls2csv --help

Достоинства и ограничения

  • Достоинства: простая установка, быстрая обработка.
  • Ограничения: по умолчанию конвертируются все листы; проблемы с некоторыми европейскими символами; даты и кавычки могут обрабатываться некорректно.

Важное: если у вас несколько листов и нужна селективная конверсия, у catdoc нет простого встроенного механизма выбора листа — можно использовать обходные пути (например, задать явный футер в каждом листе и использовать опцию -b), либо выбирать другой инструмент.

xls2csv — на Perl

xls2csv — Perl‑скрипт, чаще даёт более корректную обработку дат и кодировок, поддерживает выбор отдельного листа.

Установка

Скачайте исходники скрипта и распакуйте. В каталоге установки используйте стандартную последовательность для Perl-модулей:

perl Makefile.PL   
make  
maketest  
makeinstall

Этот скрипт требует наличия нескольких Perl‑модулей:

Locale::Recode Unicode::Map Spreadsheet::ParseExcel Text::CSV_XS

Если модулей нет, установщик запросит их загрузку и установку. На системах без root‑прав придётся устанавливать модули локально через локальную библиотеку Perl.

Использование

Команда для конвертации с выбором листа и указанием кодировок:

xls2csv -x"Path_of_Your_XLS_File"-b cp1252 -w WorkSheetName -c"Path_of_Your_CSV_File"-a8859-1

Опции: x и c — входной и выходной файлы; b и a — кодировки до и после; -w — имя рабочего листа.

Достоинства и ограничения

  • Достоинства: лучше работает с западноевропейскими кодировками и полями дат; поддерживает выбор листа.
  • Ограничения: требует установки дополнительных Perl‑модулей; если первая ячейка строки пуста, строка может быть пропущена; возможны проблемы с кавычками.

Быстрый чек‑лист перед конвертацией

  • Проверить кодировку исходного XLS (cp1252, UTF-16LE и т.д.).
  • Решить, нужны ли отдельные CSV для каждого листа.
  • Убедиться, что даты в Excel хранятся корректно (иногда Excel формирует даты как числа).
  • Сделать резервную копию оригинала.
  • Протестировать на небольшом примере перед массовой конверсией.

Шаблон шагов для автоматической конверсии (минимальная методика)

  1. Выбрать инструмент: catdoc для простоты, xls2csv для точности и выбора листов.
  2. Проверить и при необходимости конвертировать кодировку в UTF-8 (если система ожидает UTF-8).
  3. Запустить конвертацию для тестового файла.
  4. Проверить: даты, числа, строки с кавычками, пустые первые ячейки.
  5. Если всё в порядке — запустить конвертацию партийно и загрузить в базу.

Сравнительная матрица инструментов

ИнструментУстановкаВыбор листаОбработка датКодировкиПримечание
catdocПростая (C)Нет (все листы)ОграниченоПростая настройкаБыстрый, но грубый выход
xls2csvТребует Perl-модулейДа (-w)Лучше, чем catdocПоддержка через модулиГибче, требует зависимостей

Cheatsheet: команды и опции

  • Общее: всегда тестируйте на копии.
  • Пример catdoc для одного файла:
xls2csv -x"input.xls"-s cp1252 -d8859-1>"output.csv"
  • Пример xls2csv с указанием листа:
xls2csv -x"input.xls"-b cp1252 -w Sheet1 -c"output.csv"-a8859-1
  • Просмотр справки:
xls2csv --help

Решение по шагам (decision tree)

flowchart TD
  A[Есть XLS файл?] --> B{Несколько листов?}
  B -- Да --> C{Нужен выбор листа?}
  B -- Нет --> G[Любой инструмент]
  C -- Да --> D[xls2csv]
  C -- Нет --> E[catdoc]
  D --> F[Проверить даты и кавычки]
  E --> F
  F --> H[Загрузить в БД после проверки]
  G --> F

Роли и обязанности при автоматизации

  • Разработчик: выбрать инструмент, написать скрипты упаковки, обработать крайние кейсы (пустые ячейки, кавычки).
  • Администратор: установить зависимости (Perl-модули или системные библиотеки), настроить окружение.
  • Аналитик данных: проверить семантику данных (формат дат, разделитель целых/дробных частей).

Примеры ошибок и когда метод не сработает

  • Если XLS защищён паролем — ни одна утилита не сможет прочитать без пароля.
  • Если файл в формате XLSX (XML, новые версии Excel), нужно использовать другие инструменты (xlsx2csv, libreoffice в headless‑режиме или Python‑библиотеки).
  • Если в ячейках сложное форматирование (встроенные формулы, объединённые ячейки), CSV потеряет форматирование и часть информации.

Краткий глоссарий

  • XLS — бинарный формат Excel (старые версии).
  • CSV — текстовый формат с разделителями-запятыми (или другим разделителем).
  • Кодировка — способ представления символов в байтах (cp1252, ISO-8859-1, UTF-8).

Контроль качества после конверсии (тест‑кейсы)

  • Сравнить число строк в Excel и CSV для каждого листа.
  • Проверить выборочные поля: даты, строки с запятыми, строки с кавычками.
  • Убедиться, что кодировка совпадает с ожидаемой и нет «крокозябр».

Заключение

Для большинства задач, где требуется простая и быстрая конвертация, catdoc — хороший выбор. Если важна корректная обработка дат, поддержка выбора листа и точная работа с кодировками — используйте xls2csv и установите требуемые Perl‑модули. Всегда проводите тестовую проверку и используйте резервные копии исходных файлов.

Краткие рекомендации:

  • Если у вас много файлов и простая структура — catdoc.
  • Если важна точность и есть сложные поля — xls2csv.

Важно: если у вас формат XLSX или защищённый файл, рассмотрите другие инструменты (libreoffice, Python‑парсеры).

Снова — тестируйте, проверяйте кодировку и резервируйте данные перед массовой конверсией.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро