XLSX в CSV: из Excel в текстовый формат и конвертер

💻 IT и кодОбновлено: 13 июля 2026 г.4 мин чтения
Вы экспортировали отчёт из 1С или CRM, получили XLSX на 10 листов, а клиенту нужен плоский CSV для загрузки в старую систему. Конвертация вручную через «Сохранить как» убивает формулы, даты и кодировку. Я покажу 4 рабочих способа: от Python-скрипта до онлайн-конвертера без потери данных.
⚡ Коротко: главное
  • CSV — это текстовый формат без формул и форматирования; при конвертации XLSX→CSV все вычисления заменяются их результатами.
  • Лучший бесплатный онлайн-конвертер на русском — XLSX в CSV, он обрабатывает до 50 МБ и сохраняет кодировку UTF-8.
  • При конвертации через Excel используйте CSV UTF-8 (разделители — запятые), иначе даты и кириллица встанут кракозябрами.
  • В Python используйте pandas с параметром encoding='utf-8-sig' и sep=';' для корректной работы в Excel.

1. Почему XLSX и CSV — разные миры?

XLSX — бинарный контейнер на основе Open XML. Он хранит: формулы, стили, несколько листов, макросы и числовые форматы. CSV — простой текст, разделённый запятыми или точками с запятой. Он содержит только сырые данные.

При конвертации:

  • Формулы заменяются на их результаты (если не настроено иначе).
  • Даты превращаются в числа или строки (риск путаницы).
  • Стили игнорируются.
  • Объединённые ячейки дублируют данные или оставляют пустоту.

Хотите сохранить именно данные без мусора? Используйте онлайн-конвертер XLSX в CSV — он автоматически обрабатывает даты и многострочные ячейки.

2. Быстрый способ: онлайн-конвертер без установки

Для разовой или небольшой конвертации (< 50 MB) проще всего использовать веб-инструмент. Например, XLSX в CSV:

  1. Загружаете файл (drag&drop или выбор).
  2. Выбираете лист (или все).
  3. Скачиваете CSV с кодировкой UTF-8 и BOM.

Этот сервис корректно обрабатывает:

  • даты — в формате YYYY-MM-DD;
  • числа с плавающей точкой — с точкой (не запятой);
  • многострочный текст — экранирование кавычками.

Если нужна конвертация в обратную сторону — воспользуйтесь CSV в XLSX.

3. Конвертация через Python (гибкий контроль)

Когда нужно автоматизировать или обработать много файлов — Python с библиотекой pandas. Пример максимально надёжного кода:

import pandas as pd

df = pd.read_excel('input.xlsx', sheet_name=0, dtype=str)
df.to_csv('output.csv', index=False, sep=';', encoding='utf-8-sig')

Параметры:

ПараметрЗначениеЗачем
sheet_name0 или 'Имя листа'Выбор листа (0 — первый)
dtypestrЗащита от превращения дат в числа
sep';'Для Excel лучше разделитель-запятая? Нет, точка с запятой в региональных настройках RU.
encoding'utf-8-sig'BOM для корректного чтения Excel

Если в XLSX несколько листов, конвертируйте каждый в отдельный CSV:

xls = pd.ExcelFile('input.xlsx')
for sheet in xls.sheet_names:
    df = pd.read_excel(xls, sheet_name=sheet, dtype=str)
    df.to_csv(f'{sheet}.csv', index=False, sep=';', encoding='utf-8-sig')

4. Конвертация в Excel / LibreOffice — подводные камни

Самый очевидный способ — открыть XLSX и «Сохранить как» → CSV. Но есть нюансы:

  • В Excel выберите CSV UTF-8 (разделители — запятые) (если есть). Иначе Excel сохранит в ANSI (Windows-1251) и кракозябры.
  • Если нет UTF-8 CSV — сохраните как CSV (MS-DOS), затем откройте в блокноте и пересохраните с UTF-8.
  • В LibreOffice используйте диалог экспорта: Фильтр: Text CSV, кодировка Unicode (UTF-8), разделитель поля ;, текст в кавычках.

Кстати, если нужно преобразовать CSV обратно в XLSX с правильным форматированием — используйте CSV в XLSX.

Пошаговый алгоритм конвертации XLSX→CSV
  1. 1
    Выбор способа

    Онлайн, Python, Excel или скрипт

  2. 2
    Подготовка файла

    Разъединить ячейки, удалить макросы

  3. 3
    Задание разделителя

    Чаще всего ; для русской локали

  4. 4
    Выбор кодировки

    UTF-8 с BOM для совместимости с Excel

  5. 5
    Конвертация

    Выполнить выбранным инструментом

  6. 6
    Валидация выхода

    Открыть в блокноте, проверить даты и текст

Шаги для получения корректного CSV

5. Как отладить: типовые проблемы и их решение

Типичные грабли.
  1. Кракозябры вместо текста — не та кодировка. Решение: сохраняйте в UTF-8 (с BOM для Excel).
  2. Даты превратились в числа — Excel хранит даты как дни с 1900 года. Решение: при чтении через pandas указывайте dtype=str или конвертируйте даты явно df['date'] = pd.to_datetime(df['date']).
  3. Объединённые ячейки — заполнена только верхняя левая. Решение: перед конвертацией разъедините ячейки и скопируйте данные (Excel: «Формат ячеек» → «Выравнивание» → «Объединение ячеек» → отжать, или в pandas df.ffill()).
  4. Переносы строк внутри ячейки — могут сломать CSV. Решение: в pandas df.replace('\n', ' ', regex=True) или экранирование кавычками (по умолчанию).

Чек-лист перед конвертацией

0 из 8

6. Конвертация XLSX в другие форматы — когда CSV не подходит

Если нужно сохранить структуру (например, для API или веба), используйте JSON. Конвертер XLSX в JSON превращает каждую строку в объект, а листы — в массивы. Если наоборот: JSON в XLSX.

Для отображения таблицы на сайте лучше всего подходит HTML. Сервис XLSX в HTML таблицу сгенерирует чистый код <table> с сохранением стилей.

7. Батчевая конвертация (PowerShell / Bash)

На Windows без Python можно использовать PowerShell и COM-объект Excel (требуется установленный Excel, не для сервера):

$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Open('C:\path\input.xlsx')
$workbook.SaveAs('C:\path\output.csv', 6) # 6 = xlCSV
$workbook.Close()
$excel.Quit()

На Linux/Mac — через LibreOffice:

libreoffice --headless --convert-to csv --outdir /output /input.xlsx

Флаг --headless запускает без GUI. По умолчанию использует разделитель , и кодировку UTF-8. Для настройки создайте файл filter.cfg:

[Filter]
FilterName=Text - txt - csv (StarCalc)
FilterOptions=44,34,76,1

8. Как выбрать способ — сравнительная таблица

СпособБесплатноПакетная обработкаКонтроль кодировки
Онлайн-конвертерДаНетАвто (UTF-8)
Python (pandas)ДаДаПолный
Excel / LibreOfficeДаНетТребуется настройка
PowerShell / BashЗависит от ПОДаОграниченный

9. Итоги: чек-лист корректной конвертации

  1. Определите, какой разделитель устроит приёмную систему (чаще ; для RU, , для EN).
  2. Всегда сохраняйте в UTF-8 (если не уверены — с BOM).
  3. Перед конвертацией разъедините объединённые ячейки.
  4. Для дат используйте ISO-формат YYYY-MM-DD.
  5. Проверьте результат в текстовом редакторе (Notepad++, VS Code).
  6. Если файл весит > 50 MB — конвертируйте через Python, онлайн-сервисы могут обрезать.

🧮 Посчитайте сами — инструменты по теме

🧭 Разделы по теме

Частые вопросы

Почему после конвертации XLSX в CSV даты стали числами?

Excel хранит даты как количество дней с 1 января 1900 года. При конвертации в CSV без специальной обработки они превращаются в числа. Решение: в Excel перед сохранением преобразуйте столбец с датами в текст (формат ячеек → текст). Или используйте онлайн-конвертер, который сам форматирует даты.

Какой разделитель лучше указать при конвертации XLSX в CSV?

Зависит от региональных настроек программы-получателя. Для Excel на русском языке обычно требуется точка с запятой (;), на английском — запятая (,). В онлайн-конвертерах часто можно выбрать или автоопределение.

Можно ли конвертировать XLSX в CSV без потери форматирования?

Нет, CSV — это текстовый формат, не поддерживающий шрифты, цвета, границы и формулы. Сохраняется только содержимое ячеек. Если нужно сохранить внешний вид, используйте XLSX в HTML таблицу.

Как конвертировать все листы XLSX в отдельные CSV?

В онлайн-конвертере выберите опцию 'Все листы'. В Python используйте цикл по sheet_names из pandas.ExcelFile. В LibreOffice можно через макрос.

Почему в CSV текст отображается кракозябрами?

Проблема в кодировке. Большинство современных систем ожидают UTF-8, а Excel по умолчанию сохраняет в ANSI (Windows-1251). Решение: сохраняйте в UTF-8 с BOM (Byte Order Mark).

Как конвертировать XLSX в CSV на сервере без установки Excel?

Используйте Python с библиотекой openpyxl или pandas (зависит от libxml). Или CLI-утилиты вроде ssconvert (из Gnumeric). Онлайн-конвертеры тоже подходят, но не для больших файлов.

Какой онлайн-сервис конвертации XLSX в CSV самый надёжный?

Надёжные сервисы обрабатывают файлы до 50 МБ, сохраняют UTF-8, корректно экранируют кавычки и переносы строк. Например, наш XLSX в CSV на этом сайте.

Что делать, если при конвертации через Excel теряются ведущие нули (например, 00123)?

Excel автоматически преобразует строки в числа, отбрасывая нули. Перед конвертацией отформатируйте столбец как текст. Или используйте Python с параметром dtype=str.

Источники и нормативные документы

  1. Open XML SDK - XLSX structure
  2. RFC 4180 - CSV format
  3. Pandas documentation - read_excel

Ещё по теме «IT и код»