Excel — главный формат для таблиц в офисе, CSV — стандарт для обмена данными между программами и базами данных. Конвертация кажется простой, но именно здесь кириллические данные чаще всего «ломаются»: кодировка и разделители работают иначе, чем ожидает пользователь. После конвертации готовый CSV-файл можно открыть в любом текстовом редакторе, Python или базе данных.
Коротко: в Excel используйте «Файл → Сохранить как → CSV UTF-8 (с разделителями-запятыми)». Если нужен точный контроль кодировки или разделителя — LibreOffice Calc. Для пакетной обработки — Python pandas с df.to_csv(). Онлайн-сервисы подойдут для разовой конвертации без установки ПО.
Что такое CSV и зачем конвертировать из Excel
CSV (Comma-Separated Values) — текстовый файл, в котором каждая строка соответствует одной записи, а поля внутри строки разделены символом-разделителем: чаще всего запятой (,) или точкой с запятой (;). Спецификация формата закреплена в RFC 4180.
Конвертировать xlsx в csv нужно в следующих случаях:
- Импорт данных в базы данных (PostgreSQL, MySQL, SQLite) — большинство БД принимают CSV напрямую.
- Загрузка в CRM, ERP, BI-инструменты (Power BI, Tableau, Metabase).
- Обработка в Python, R или любом скриптовом пайплайне.
- Обмен данными между системами, которые не читают .xlsx.
Что теряется при конвертации Excel в CSV: форматирование ячеек (цвета, шрифты, границы), формулы (сохраняются только вычисленные значения), данные со всех листов кроме активного, изображения и диаграммы.
Что сохраняется: сырые текстовые и числовые данные активного листа.
При сохранении в CSV будут потеряны форматирование ячеек, формулы и данные со всех листов, кроме активного. Сохраните резервную копию .xlsx перед конвертацией.
Способ 1: Сохранить как CSV в Microsoft Excel
Самый очевидный способ конвертировать xlsx в csv — встроенная функция «Сохранить как» в Microsoft Excel. Работает без установки дополнительного ПО в Excel 2016, 2019, 2021 и Microsoft 365.
Пошаговая инструкция (Excel 2016–2026)
- Откройте файл .xlsx или .xls в Microsoft Excel.
- Перейдите в «Файл» → «Сохранить как» (или нажмите F12).
- Выберите папку назначения на диске.
- В поле «Тип файла» выберите один из вариантов CSV (см. таблицу ниже).
- Нажмите «Сохранить» → подтвердите предупреждение о потере форматирования.
- Убедитесь, что активный лист — нужный: конвертируется только он.
Какой тип CSV выбрать в Excel
| Тип файла | Кодировка | Разделитель | Когда использовать |
|---|---|---|---|
| CSV UTF-8 (с разделителями-запятыми) | UTF-8 с BOM | ; (в рус. локали) | Универсально для русского текста — файл корректно открывается в Excel и читается Python |
| CSV (разделители — запятые) | Windows-1251 | ; (в рус. локали) | Старые системы, требующие кодировку CP1251 |
| CSV (MS-DOS) | CP866 | ; | Устаревшие DOS-системы и специфичные российские ПО |
Если файл будет открываться в Excel — берите «CSV UTF-8 (с разделителями-запятыми)». Если передаёте в Python или базу данных — лучше использовать LibreOffice или Python для точного контроля кодировки и разделителя.
Способ 2: LibreOffice Calc — экспорт с настройками
LibreOffice Calc — бесплатная альтернатива Excel, доступная на Windows, macOS и Linux. Главное преимущество: при экспорте в CSV программа явно показывает диалог настройки кодировки и разделителя — никаких скрытых сюрпризов.
Пошаговая инструкция
- Откройте файл .xlsx в LibreOffice Calc (бесплатно, доступен на всех платформах).
- Выберите «Файл» → «Сохранить как», в списке типов укажите «Text CSV (.csv)».
- В диалоге «Экспорт текстового файла» настройте три параметра: набор символов (кодировку), разделитель полей, разделитель текста.
- Нажмите ОК — файл сохранён с заданными параметрами.
Настройка разделителя и кодировки в LibreOffice
- Кодировка «Unicode (UTF-8)» — универсальный выбор для кириллицы.
- Разделитель «;» (точка с запятой) — если файл будет открываться в Excel в русской локали.
- Разделитель «,» (запятая) — если файл идёт в Python, PostgreSQL или международный обмен.
- LibreOffice поддерживает экспорт каждого листа отдельно через макрос Basic — встроенного способа конвертировать все листы сразу нет.
По сравнению с Excel, LibreOffice не скрывает параметры кодировки: вы точно знаете, в каком формате сохраняется файл.
Способ 3: Онлайн-конвертеры
Когда не хочется устанавливать программы, конвертировать excel файл в csv онлайн бесплатно можно через браузерные сервисы. Загружаете .xlsx — получаете .csv без ПО. Сравнение трёх популярных вариантов:
| Сервис | Настройка кодировки | Настройка разделителя | Размер файла | Конфиденциальность |
|---|---|---|---|---|
| Convertio | Нет | Нет | до 100 МБ (бесплатно) | Файлы хранятся 24 ч |
| CloudConvert | Да | Да | до 1 ГБ (платно) | GDPR-compliant |
| CSV-Online | Нет | Нет | до 10 МБ | Не указана |
Не загружайте файлы с персональными данными (ФИО, паспорта, контакты клиентов) на сторонние онлайн-сервисы. Для конфиденциальных данных используйте LibreOffice или Python локально.
Способ 4: Python (pandas) — для автоматизации
Для разработчиков и аналитиков, которым нужна пакетная конвертация или встраивание xlsx→csv в пайплайн обработки данных, оптимальный инструмент — библиотека pandas. Документация метода — pandas.DataFrame.to_csv.
Базовая конвертация одного файла:
import pandas as pd
# Читаем Excel-файл
df = pd.read_excel("data.xlsx", sheet_name="Sheet1")
# Конвертируем в CSV: UTF-8 с BOM, разделитель запятая
df.to_csv("output.csv", index=False, encoding="utf-8-sig", sep=",")Ключевые параметры:
encoding="utf-8-sig"— UTF-8 с BOM; Excel корректно отображает кириллицу при открытии файла.encoding="utf-8"— без BOM; предпочтительно для Python, PostgreSQL, Linux-систем.sep=","— запятая (для Python/БД);sep=";"— точка с запятой (для Excel в РФ).index=False— не добавляет колонку с номерами строк (почти всегда нужен).
Конвертация всех листов Excel в отдельные CSV-файлы:
import pandas as pd
xf = pd.ExcelFile("data.xlsx")
for sheet in xf.sheet_names:
df = pd.read_excel(xf, sheet_name=sheet)
df.to_csv(f"{sheet}.csv", index=False, encoding="utf-8-sig")Этот подход решает задачу, которую встроенные средства Excel не выполняют: конвертация каждого листа в отдельный CSV без ручных действий.
Кодировка CSV: UTF-8, UTF-8 с BOM или Windows-1251
Кодировка — самая частая причина кракозябров при экспорте excel в csv с кириллицей. Проблема возникает из-за несоответствия ожиданий: Excel в Windows открывает CSV в кодировке Windows-1251 по умолчанию. Если файл сохранён в UTF-8 без BOM и содержит русский текст — при открытии в Excel появятся нечитаемые символы.
Решение — UTF-8 с BOM (Byte Order Mark): три скрытых байта EF BB BF в начале файла сигнализируют Excel о кодировке. Подробнее об этой проблеме — в нашей статье «Кракозябры: что это и как исправить кодировку».
| Кодировка | Файл идёт в Excel | Файл идёт в Python/БД | Файл идёт в Linux-системы |
|---|---|---|---|
UTF-8 с BOM (utf-8-sig) |
✅ Кириллица корректна | ✅ pandas читает без ошибок | 🟡 BOM-символ может мешать некоторым парсерам |
UTF-8 без BOM (utf-8) |
❌ Кракозябры в Excel 2003–2016 | ✅ Рекомендуется | ✅ Норма для Linux/macOS |
Windows-1251 (cp1251) |
✅ Excel 2003–2010 | ⚠ Нужно явно указывать encoding при чтении | ❌ Нет нативной поддержки |
Вывод: если не уверены, какую кодировку выбрать — используйте UTF-8 с BOM (utf-8-sig). Это наиболее безопасный выбор для файлов с кириллицей, которые могут открываться как в Excel, так и в Python.
Разделитель в CSV: запятая или точка с запятой
Стандарт CSV предполагает запятую (,) — отсюда «Comma-Separated Values». Однако Microsoft Excel в русской локали по умолчанию использует точку с запятой (;). Причина: в России запятая — это десятичный разделитель (1,5 вместо 1.5), поэтому Excel не может использовать её как разделитель полей.
Результат: файл с запятой, открытый в русском Excel — все данные окажутся в одном столбце. И наоборот, файл с точкой с запятой, переданный в Python или PostgreSQL, потребует явного указания разделителя.
Как проверить текущий разделитель системы в Windows:
Панель управления → Региональные стандарты → Дополнительно → Разделитель элементов спискаПравило выбора разделителя:
- Файл → Excel в русской локали → используйте
; - Файл → Python / PostgreSQL / международный обмен → используйте
, - Неизвестно → добавьте первой строкой файла директиву
sep=,(без кавычек) перед данными — Excel читает эту директиву и применяет указанный разделитель автоматически.
Частые ошибки и как их исправить
Большинство проблем при конвертации Excel в CSV решается одним из пяти способов — в зависимости от симптома:
| Симптом | Причина | Решение |
|---|---|---|
| Все данные в одной колонке | Неверный разделитель | Поменяйте ; на , или наоборот; откройте через «Данные → Из текста/CSV» и укажите разделитель вручную |
Кракозябры (?À¾…) |
Неверная кодировка | Используйте UTF-8 с BOM (utf-8-sig) или пересохраните через LibreOffice с явной настройкой кодировки |
| Потеряны данные со второго листа | Excel конвертирует только активный лист | Сохраняйте каждый лист отдельно или используйте Python pandas (пример в способе 4) |
| Числа стали текстом | Форматирование ячеек «Текст» в Excel | До конвертации выделите столбцы, снимите формат «Текст» и принудительно пересчитайте (Ctrl+Alt+F9) |
| Файл не открывается в Python с BOM-ошибкой | BOM мешает парсеру ожидающему чистый UTF-8 | Используйте encoding="utf-8-sig" в pandas — он автоматически обрабатывает BOM при чтении |
Часто задаваемые вопросы
В чём разница между «CSV UTF-8» и «CSV UTF-8 (с разделителями-запятыми)» в Excel?
Оба формата используют кодировку UTF-8, но названия зависят от версии Excel. В современных версиях «CSV UTF-8 (с разделителями-запятыми)» добавляет BOM — это предпочтительный вариант для кириллицы. Если видите оба варианта в списке, выбирайте «с разделителями-запятыми».
Почему после открытия CSV все данные оказались в одном столбце?
Excel не распознал разделитель. В русской локали Excel ожидает точку с запятой (;), но файл сохранён с запятой (,). Чтобы исправить без пересохранения: откройте файл через «Данные → Из текста/CSV» и в мастере импорта вручную укажите разделитель. Или добавьте строку sep=, первой строкой CSV — Excel прочитает директиву.
Можно ли конвертировать сразу все листы Excel в отдельные CSV-файлы?
Встроенными средствами Excel — нет: «Сохранить как CSV» всегда конвертирует только активный лист. Для всех листов сразу используйте Python pandas (пример с циклом по xf.sheet_names из раздела «Способ 4»). В LibreOffice возможна конвертация каждого листа через макрос Basic.
Как убрать кавычки вокруг значений в CSV?
Кавычки добавляются автоматически, если значение содержит разделитель, перенос строки или сами кавычки — это обязательная часть формата CSV по RFC 4180. В pandas используйте параметр quoting=csv.QUOTE_MINIMAL для минимизации. Полностью убрать кавычки нельзя без нарушения формата.
Чем открыть CSV-файл с разделителем «запятая» в российском Excel?
Способ 1: «Данные → Из текста/CSV» → в мастере импорта укажите разделитель запятую. Способ 2: Добавьте первой строкой файла текст sep=, (без кавычек и без пробелов) — Excel автоматически подхватит разделитель при открытии. Подробнее — в нашей статье «Чем открыть CSV-файл».
Теряются ли формулы при конвертации Excel в CSV?
Да. CSV хранит только вычисленные значения, не сами формулы. Перед конвертацией убедитесь, что все формулы пересчитаны — нажмите Ctrl+Alt+F9. Если ячейка с формулой не пересчиталась, в CSV может попасть пустое значение или «0» вместо реального результата.
