Формат CSV (Comma-Separated Values) стал стандартом де-факто для обмена табличными данными между программами. Его поддерживают 1С, базы данных (MySQL, PostgreSQL), аналитические системы (Google Analytics, Power BI) и даже веб-приложения. Однако при конвертации из Excel (.xlsx/.xls) в .csv пользователи часто сталкиваются с проблемами: сбивается кодировка, теряются формулы, даты превращаются в числа. Эта статья поможет избежать типичных ошибок и выбрать оптимальный метод экспорта.
Многие ошибочно считают, что достаточно просто сохранить файл через Файл → Сохранить как. На практике же требуется учитывать региональные настройки системы, формат разделителей (запятая или точка с запятой), а также особенности данных — например, ячейки с переносами строк или специальными символами. Мы разберём все нюансы, включая скрытые настройки Excel, которые влияют на результат.
В отличие от .xlsx, формат .csv не поддерживает:
- 📊 Многостраничные книги — сохраняется только активный лист
- 🔢 Формулы — остаются только рассчитанные значения
- 🎨 Форматирование (цвета, шрифты, границы)
- 📅 Условное форматирование и диаграммы
1. Стандартный экспорт через «Сохранить как»
Самый очевидный способ — использовать встроенную функцию Excel. Он подходит для большинства случаев, но требует правильных настроек.
Откройте файл в Excel и выполните:
- Перейдите в
Файл → Сохранить как - В выпадающем списке
Тип файлавыберитеCSV (разделители — запятые) (*.csv) - Нажмите
Сохранить
На этом этапе Excel может выдать предупреждения:
⚠️ Внимание: Если в данных есть формулы, программа предложит сохранить только значения. Отменить это действие нельзя — формулы будут утеряны безвозвратно.
⚠️ Внимание: При наличии нескольких листов Excel сохранит только активный. Чтобы экспортировать все листы, придётся повторять операцию для каждого или использовать макрос.
По умолчанию Excel в русской версии использует точку с запятой (;) как разделитель, а не запятую. Это связано с региональными настройками Windows. Если вам нужен именно CSV с запятыми (например, для Google Sheets), придётся изменить параметры системы или воспользоваться обходным путём — об этом в следующем разделе.
Удалить объединённые ячейки|Заменить переносы строк на пробелы|Проверить кодировку специальных символов (®, ©, €)|Убрать формулы (оставить только значения)|Сохранить оригинал в .xlsx на случай ошибок-->
2. Настройка разделителей: запятая vs точка с запятой
Разница между CSV с запятыми и точкой с запятой критична для некоторых систем. Например:
- 🌍 Google Sheets и MacOS ожидают запятую (
,) - 🪟 Windows-приложения (включая 1С) часто требуют точку с запятой (
;) - 📁 Базы данных могут поддерживать оба варианта, но с разными настройками импорта
Чтобы принудительно установить запятую как разделитель:
- Откройте
Панель управления → Часы и регион → Регион - Перейдите на вкладку
Дополнительно - В поле
Разделитель элементов спискавведите запятую (,) - Сохраните изменения и перезапустите Excel
После изменения региональных настроек все ранее созданные CSV-файлы будут использовать новый разделитель, но уже существующие файлы не обновятся автоматически. Если вам нужно единоразово получить CSV с запятой без смены системных параметров, используйте Excel Online или Google Sheets — они игнорируют региональные настройки Windows.
| Система/Приложение | Ожидаемый разделитель | Кодировка |
|---|---|---|
| Windows (1С, SQL Server) | ; |
Windows-1251 или UTF-8 |
| MacOS / Google Sheets | , |
UTF-8 |
| MySQL (по умолчанию) | , |
UTF-8 |
| Power BI | , или ; (настраивается) |
UTF-8 |
3. Экспорт с сохранением кодировки UTF-8
Проблемы с кодировкой — самая частая причина «кракозябров» в CSV. По умолчанию Excel в Windows сохраняет файлы в ANSI (Windows-1251), что приводит к искажению кириллических символов при открытии в других программах.
Чтобы сохранить в UTF-8:
- В Excel 2016+ выберите
Файл → Сохранить как - В списке типов файлов найдите
CSV UTF-8 (разделители — запятые) (*.csv) - Сохраните файл
Для старых версий Excel (2013 и ранее) придётся использовать обходной путь:
- Сохраните файл в обычном
CSV - Откройте его в Блокноте (
Notepad) - Выберите
Файл → Сохранить как, в полеКодировкаукажитеUTF-8 - Сохраните с тем же именем (заменив оригинал)
4. Альтернативные способы конвертации
Если стандартный экспорт не подходит, воспользуйтесь одним из этих методов:
Способ 1: Через Google Sheets
- 📤 Загрузите файл
.xlsxв Google Диск - 📊 Откройте его через Google Sheets
- 💾 Выберите
Файл → Скачать → Значения, разделённые запятыми (.csv)
UTF-8 с запятыми, независимо от настроек системы.
Способ 2: Используя Power Query
- В Excel перейдите на вкладку
Данные → Получить данные → Из файла → Из книги - Выберите исходный файл
.xlsx - В редакторе Power Query нажмите
Главная → Закрыть и загрузить → Закрыть и загрузить в... - Укажите
Только создать подключение, затем сохраните какCSV
Способ 3: Онлайн-конвертеры
Для разовых задач удобны сервисы вроде:
- 🌐 ConvertCSV — поддерживает настройку разделителей и кодировки
- 🌐 CloudConvert — конвертация без установки ПО
- 🌐 Zamzar — отправляет результат на email
Будьте осторожны с конфиденциальными данными — загруженные файлы могут временно храниться на серверах третьих сторон. Для чувствительной информации используйте офлайн-методы.Риски онлайн-конвертеров
5. Распространённые ошибки и как их избежать
Проблема 1: Даты превращаются в числа
Пример: 01.05.2026 становится 45392. Это происходит потому, что Excel хранит даты как количество дней с 1900 года.
Решение:
- 📅 Преобразуйте даты в текстовый формат через
Формат ячеек → Текстовыйдо экспорта - 🔄 Или используйте формулу
=ТЕКСТ(A1; "ДД.ММ.ГГГГ")в отдельном столбце
Проблема 2: Объединённые ячейки разбиваются
В CSV нет понятия объединённых ячеек — данные из них дублируются во все ячейки диапазона. Например:
A1 (объединена с B1) | C1
---------------------|----
Значение | 10
Станет:
A1 | B1 | C1
------------|-------------|----
Значение | Значение | 10
Решение: Разъедините ячейки перед экспортом или обработайте результат в текстовом редакторе.
Проблема 3: Специальные символы ломают структуру
Символы вроде ", ,, ; или переносы строк (\n) могут сбивать разбор CSV. Например, текст "Привет, мир!" в ячейке приведёт к смещению столбцов.
Решение:
- 🔍 Замените кавычки на одинарные (
') или удалите их - 📝 Уберите переносы строк через
НАЙТИ/ЗАМЕНИТЬ(Ctrl+H→ ищитеAlt+Enter) - 🛡️ Используйте
ТЕКСТ.ПРЕОБРдля экранирования:=ТЕКСТ.ПРЕОБР(A1; """"; """""")
6. Автоматизация: макросы и скрипты
Если вам регулярно нужно конвертировать XLSX в CSV с одинаковыми настройками, автоматизируйте процесс через VBA или Python.
Макрос для Excel (VBA):
Создаёт CSV для каждого листа книги с запятыми и кодировкой UTF-8:
Sub ExportAllSheetsToCSV()
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
Python-скрипт (с использованием pandas):
Конвертирует все листы с настройкой разделителя и кодировки:
import pandas as pd
Чтение Excel
xls = pd.ExcelFile('input.xlsx')
Экспорт каждого листа в CSV
for sheet_name in xls.sheet_names:
df = pd.read_excel(xls, sheet_name=sheet_name)
df.to_csv(f'{sheet_name}.csv',
index=False,
encoding='utf-8',
sep=',', # или ';' для Windows
quotechar='"')
Для запуска скрипта установите библиотеки:
pip install pandas openpyxl
7. Проверка результата: как убедиться, что CSV корректен
Даже после успешного экспорта файлы CSV могут содержать скрытые ошибки. Вот как их выявить:
Шаг 1: Визуальный осмотр
Откройте файл в текстовом редакторе (не в Excel!). Правильный CSV должен выглядеть так:
"Заголовок1","Заголовок2","Заголовок3"
"Значение1","Значение2","Значение3"
Обратите внимание на:
- 🔹 Кавычки вокруг текста (если есть запятые внутри ячеек)
- 🔹 Отсутствие лишних разделителей в конце строк
- 🔹 Корректное отображение кириллицы
Шаг 2: Валидация онлайн
Используйте сервисы для проверки структуры:
- 🌐 CSVLint — анализирует синтаксис и кодировку
- 🌐 CSV Validator — проверяет соответствие стандартам RFC 4180
Шаг 3: Тестовый импорт
Попробуйте загрузить файл в целевую систему (например, в 1С или MySQL) с минимальным набором данных. Это поможет выявить проблемы на раннем этапе.
FAQ: Частые вопросы по конвертации Excel в CSV
Можно ли сохранить в CSV несколько листов Excel одновременно?
Нет, стандартный экспорт сохраняет только активный лист. Чтобы экспортировать все листы, используйте:
- 📝 Макрос VBA (см. раздел 6)
- 🐍 Python-скрипт с библиотекой
pandas - 🖥️ Специализированные программы вроде ExcelToCSV или LibreOffice Calc (поддерживает пакетный экспорт)
Почему после экспорта в CSV русские буквы отображаются кракозябрами?
Это проблема кодировки. Решения:
- Сохраните файл в
UTF-8(в Excel 2016+ выберите типCSV UTF-8) - Если используете старую версию Excel:
- Сохраните в обычном CSV
- Откройте в Блокноте и пересохраните с кодировкой
UTF-8
- Проверьте настройки целевой программы (например, в 1С укажите
UTF-8при импорте)
Как экспортировать в CSV только выделенный диапазон, а не весь лист?
Стандартными средствами Excel это невозможно. Обходные пути:
- 📋 Скопируйте диапазон на новый лист и экспортируйте его
- 🔍 Используйте Power Query:
- Загрузите диапазон через
Данные → Из таблицы/диапазона - В редакторе Power Query оставьте только нужные столбцы
- Экспортируйте результат в CSV
- Загрузите диапазон через
df = pd.read_excel('file.xlsx', sheet_name='List1', usecols='A:C')В моём CSV числа с ведущими нулями (например, 00123) превращаются в 123. Как это исправить?
Это происходит потому, что Excel автоматически удаляет ведущие нули у чисел. Решения:
- 🔢 Преобразуйте столбец в текстовый формат перед экспортом (
Формат ячеек → Текстовый) - 📌 Добавьте апостроф перед числом (например,
'00123) - 🔄 Используйте формулу для принудительного форматирования:
=ТЕКСТ(A1; "00000")
После экспорта проверьте, что в CSV числа сохранены с ведущими нулями (они должны быть в кавычках: "00123").
Можно ли в CSV сохранить формулы, а не только значения?
Нет, формат CSV не поддерживает формулы — только статичные данные. Альтернативы:
- 📊 Сохраните оригинал в XLSX и передавайте оба файла (CSV для данных + XLSX для формул)
- 🔄 Преобразуйте формулы в значения перед экспортом (
Копировать → Специальная вставка → Значения) - 📁 Используйте другой формат, поддерживающий формулы (например,
.odsдля LibreOffice)