Конвертация 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 формирует даты как числа).
- Сделать резервную копию оригинала.
- Протестировать на небольшом примере перед массовой конверсией.
Шаблон шагов для автоматической конверсии (минимальная методика)
- Выбрать инструмент: catdoc для простоты, xls2csv для точности и выбора листов.
- Проверить и при необходимости конвертировать кодировку в UTF-8 (если система ожидает UTF-8).
- Запустить конвертацию для тестового файла.
- Проверить: даты, числа, строки с кавычками, пустые первые ячейки.
- Если всё в порядке — запустить конвертацию партийно и загрузить в базу.
Сравнительная матрица инструментов
| Инструмент | Установка | Выбор листа | Обработка дат | Кодировки | Примечание |
|---|---|---|---|---|---|
| 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‑парсеры).
Снова — тестируйте, проверяйте кодировку и резервируйте данные перед массовой конверсией.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента