Как конвертировать Excel в CSV: все способы с пояснениями и предупреждениями

Файлы Excel (.xls, .xlsx) удобны для работы с таблицами, но часто требуется экспортировать данные в CSV — универсальный формат для обмена информацией между программами. Например, для загрузки в базы данных, CRM-системы или веб-приложения. В этой статье разберём все актуальные способы конвертации, включая скрытые нюансы, которые могут испортить ваши данные при неправильном экспорте.

Основная проблема при преобразовании — потеря форматирования (цвета, шрифты, объединённые ячейки) и некорректное отображение специальных символов (запятые, кавычки, переносы строк). Мы покажем, как избежать этих ошибок на практике, с учётом особенностей разных версий Microsoft Excel, LibreOffice и онлайн-инструментов. А ещё выясним, почему иногда CSV-файл "ломается" при открытии в блокноте и как это исправить.

Почему CSV, а не Excel: ключевые отличия форматов

Формат CSV (Comma-Separated Values) хранит данные в виде простого текста, где значения разделяются запятыми или другими символами. В отличие от .xlsx, здесь нет:

  • 📊 Многостраничности — CSV всегда содержит только один лист.
  • 🎨 Форматирования — нет цветов, шрифтов, границ ячеек.
  • 🔢 Формул — сохраняются только итоговые значения.
  • 📏 Объединённых ячеек — они преобразуются в пустые столбцы.

Зато CSV в 5–10 раз легче по весу и совместим с любыми системами — от Python-скриптов до . Главный минус: если в ячейках есть запятые, кавычки или переносы строк, файл может открыться неправильно. Об этом подробнее в разделе про кодировки и разделители.

📊 Какой программой вы чаще пользуетесь для работы с таблицами?
Microsoft Excel
LibreOffice Calc
Google Таблицы
Другой редактор

Способ 1: Стандартный экспорт через Excel (Windows/Mac)

Самый надёжный метод — использовать встроенную функцию Сохранить как. Подходит для Excel 2010–2026 и Office 365.

  1. Откройте файл в Excel.
  2. Перейдите в Файл → Сохранить как.
  3. В выпадающем меню Тип файла выберите CSV (разделители — запятые) (*.csv).
  4. Нажмите Сохранить.

⚠️ Внимание: Если в вашей таблице несколько листов, Excel предложит сохранить только активный. Чтобы экспортировать все листы, повторите процедуру для каждого или используйте макрос VBA.

Исключены объединённые ячейки|Удалены формулы (остались только значения)|Проверены специальные символы (запятые, кавычки)|Сохранена копия оригинального файла-->

Параметр Excel 2010–2016 Excel 2019–2026 Office 365
Поддержка UTF-8 ❌ (только ANSI) ✅ (с 2019 года)
Максимальный размер файла 1 млн строк 1 млн строк 1 млн строк
Сохранение формул ❌ (только значения)

Разделители и кодировки: почему CSV открывается криво

Частая ошибка — файл открывается в блокноте "кракозябрами" или данные смещаются по столбцам. Причины:

  • 🔤 Неверная кодировка — Windows по умолчанию сохраняет CSV в ANSI, что ломает кириллицу. Используйте UTF-8.
  • 📍 Неправильный разделитель — в Европе часто используют ; вместо ,.
  • 📄 Переносы строк в ячейках — CSV не поддерживает многстрочный текст без экранирования.

Чтобы исправить кодировку в Excel 2019+:

  1. При сохранении выберите CSV UTF-8 (разделители — запятые) (*.csv).
  2. Если такого пункта нет, используйте LibreOffice или онлайн-конвертеры.
Как проверить кодировку CSV-файла?

Откройте файл в Notepad++ или VS Code — кодировка отображается в правом нижнем углу. Если там ANSI или UCS-2, пересохраните в UTF-8.

Для изменения разделителя в Windows:

  1. Откройте Панель управления → Региональные стандарты → Дополнительные параметры.
  2. В поле Разделитель списка укажите нужный символ (например, ;).
  3. Перезапустите Excel и сохраните файл заново.

Способ 2: Конвертация через LibreOffice Calc (бесплатно)

LibreOffice Calc — бесплатная альтернатива Excel с поддержкой UTF-8 по умолчанию. Инструкция:

  1. Откройте файл в Calc.
  2. Перейдите в Файл → Сохранить как.
  3. Выберите тип Текстовый CSV (.csv).
  4. Нажмите Сохранить и в дополнительных настройках:
    • Укажите Кодировка: Unicode (UTF-8).
    • Выберите разделитель (, или ;).
    • Отметьте Сохранять формулы, если нужно.

⚠️ Внимание: LibreOffice может неправильно обработать даты в формате ДД.ММ.ГГГГ — они преобразуются в ММ/ДД/ГГГГ. Перед конвертацией проверьте формат ячеек с датами (Формат → Ячейки → Число).

Способ 3: Автоматизация через VBA (для нескольких листов)

Если нужно экспортировать все листы книги в отдельные CSV-файлы, используйте этот макрос:

Sub ExportSheetsToCSV()

Dim ws As Worksheet

Dim csvPath As String

csvPath = "C:\Temp\" ' Укажите свою папку

For Each ws In ThisWorkbook.Worksheets

ws.Copy

ActiveWorkbook.SaveAs csvPath & ws.Name & ".csv", xlCSVUTF8

ActiveWorkbook.Close False

Next ws

End Sub

Как запустить:

  1. Нажмите Alt + F11 для открытия редактора VBA.
  2. Вставьте код в модуль (Insert → Module).
  3. Измените путь C:\Temp\ на свою папку.
  4. Запустите макрос кнопкой F5.
  5. Способ 4: Онлайн-конвертеры (без установки программ)

    Если нет доступа к Excel или LibreOffice, используйте веб-сервисы:

    • 🌐 ConvertCSV — поддерживает UTF-8 и большие файлы (до 50 МБ).
    • 🌐 CloudConvert — конвертация в облаке с настройкой разделителей.
    • 🌐 Zamzar — отправляет результат на email.

    ⚠️ Внимание: Не загружайте в онлайн-сервисы файлы с конфиденциальными данными (пароли, личная информация). Для таких случаев используйте локальные скрипты.

    Способ 5: Конвертация через Python (для программистов)

    Если вам нужно автоматизировать процесс или обработать сотни файлов, используйте скрипт на Python с библиотекой pandas:

    import pandas as pd
    
    

    Чтение Excel

    df = pd.read_excel('input.xlsx', sheet_name='Лист1')

    Сохранение в CSV с UTF-8

    df.to_csv('output.csv', index=False, encoding='utf-8', sep=';')

    Установите зависимости предварительно:

    pip install pandas openpyxl

    Преимущества метода:

    • 🔄 Обработка больших файлов (миллионы строк).
    • 🛠️ Гибкая настройка разделителей и кодировок.
    • 📊 Возможность предварительной очистки данных.

    Частые ошибки и как их избежать

    Даже при правильной конвертации CSV может открываться некорректно. Рассмотрим типичные проблемы:

    Проблема Причина Решение
    Кириллица отображается кракозябрами Файл сохранён в ANSI вместо UTF-8 Пересохраните с кодировкой UTF-8 или откройте в Notepad++ и конвертируйте
    Данные смещены по столбцам В ячейках есть запятые или разделитель неверный Используйте ; как разделитель или экранируйте символы кавычками
    Даты отображаются как числа (например, 44197) Excel хранит даты как количество дней с 1900 года Перед экспортом преобразуйте формат ячеек в Текстовый

    Если CSV нужно импортировать в MySQL или PostgreSQL, проверьте:

    • 📌 Экранирование кавычек — замените " на "".
    • 📌 Пустые значенияNULL в SQL ≠ пустой ячейке в CSV.
    • 📌 Десятичные разделители — в Европе ,, в США ..

FAQ: Ответы на частые вопросы

Можно ли конвертировать CSV обратно в Excel без потерь?

Да, но восстановятся только данные — без формул, форматирования и объединённых ячеек. Используйте Файл → Открыть в Excel и выберите CSV-файл. При необходимости укажите разделитель вручную.

Почему в CSV пропали ведущие нули (например, в артикулах 00123)?

Excel по умолчанию убирает ведущие нули, воспринимая ячейки как числа. Перед экспортом преобразуйте столбец в Текстовый формат (Главная → Формат → Формат ячеек → Текстовый).

Как экспортировать в CSV с табуляцией вместо запятых?

В Excel выберите тип файла Текстовый (с табуляцией) (*.txt). В LibreOffice укажите разделитель \t в настройках экспорта. В Python используйте параметр sep='\t'.

Можно ли сохранить в CSV формулы, а не значения?

Нет, CSV не поддерживает формулы — только итоговые данные. Если нужно сохранить формулы, используйте формат .xlsx или экспортируйте их в отдельный столбец как текст (с помощью функции =ФОРМУЛТЕКСТ() в Excel).

Как автоматизировать конвертацию сотен файлов?

Используйте скрипты на Python (см. раздел выше) или PowerShell:

Get-ChildItem "C:\Папка\*.xlsx" | ForEach-Object {

$excel = New-Object -ComObject Excel.Application

$workbook = $excel.Workbooks.Open($_.FullName)

$workbook.SaveAs($_.FullName.Replace(".xlsx", ".csv"), 6) # 6 = CSV-формат

$excel.Quit()

}