XLSX в CSV: из Excel в текстовый формат и конвертер
- CSV — это текстовый формат без формул и форматирования; при конвертации XLSX→CSV все вычисления заменяются их результатами.
- Лучший бесплатный онлайн-конвертер на русском — XLSX в CSV, он обрабатывает до 50 МБ и сохраняет кодировку UTF-8.
- При конвертации через Excel используйте CSV UTF-8 (разделители — запятые), иначе даты и кириллица встанут кракозябрами.
- В Python используйте pandas с параметром encoding='utf-8-sig' и sep=';' для корректной работы в Excel.
- 1. Почему XLSX и CSV — разные миры?
- 2. Быстрый способ: онлайн-конвертер без установки
- 3. Конвертация через Python (гибкий контроль)
- 4. Конвертация в Excel / LibreOffice — подводные камни
- 5. Как отладить: типовые проблемы и их решение
- 6. Конвертация XLSX в другие форматы — когда CSV не подходит
- 7. Батчевая конвертация (PowerShell / Bash)
- 8. Как выбрать способ — сравнительная таблица
- 9. Итоги: чек-лист корректной конвертации
1. Почему XLSX и CSV — разные миры?
XLSX — бинарный контейнер на основе Open XML. Он хранит: формулы, стили, несколько листов, макросы и числовые форматы. CSV — простой текст, разделённый запятыми или точками с запятой. Он содержит только сырые данные.
При конвертации:
- Формулы заменяются на их результаты (если не настроено иначе).
- Даты превращаются в числа или строки (риск путаницы).
- Стили игнорируются.
- Объединённые ячейки дублируют данные или оставляют пустоту.
Хотите сохранить именно данные без мусора? Используйте онлайн-конвертер XLSX в CSV — он автоматически обрабатывает даты и многострочные ячейки.
2. Быстрый способ: онлайн-конвертер без установки
Для разовой или небольшой конвертации (< 50 MB) проще всего использовать веб-инструмент. Например, XLSX в CSV:
- Загружаете файл (drag&drop или выбор).
- Выбираете лист (или все).
- Скачиваете 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_name | 0 или 'Имя листа' | Выбор листа (0 — первый) |
| dtype | str | Защита от превращения дат в числа |
| 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.
- 1Выбор способа
Онлайн, Python, Excel или скрипт
- 2Подготовка файла
Разъединить ячейки, удалить макросы
- 3Задание разделителя
Чаще всего ; для русской локали
- 4Выбор кодировки
UTF-8 с BOM для совместимости с Excel
- 5Конвертация
Выполнить выбранным инструментом
- 6Валидация выхода
Открыть в блокноте, проверить даты и текст
5. Как отладить: типовые проблемы и их решение
Типичные грабли.
- Кракозябры вместо текста — не та кодировка. Решение: сохраняйте в UTF-8 (с BOM для Excel).
- Даты превратились в числа — Excel хранит даты как дни с 1900 года. Решение: при чтении через pandas указывайте
dtype=strили конвертируйте даты явноdf['date'] = pd.to_datetime(df['date']). - Объединённые ячейки — заполнена только верхняя левая. Решение: перед конвертацией разъедините ячейки и скопируйте данные (Excel: «Формат ячеек» → «Выравнивание» → «Объединение ячеек» → отжать, или в pandas
df.ffill()). - Переносы строк внутри ячейки — могут сломать 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,18. Как выбрать способ — сравнительная таблица
| Способ | Бесплатно | Пакетная обработка | Контроль кодировки |
|---|---|---|---|
| Онлайн-конвертер | Да | Нет | Авто (UTF-8) |
| Python (pandas) | Да | Да | Полный |
| Excel / LibreOffice | Да | Нет | Требуется настройка |
| PowerShell / Bash | Зависит от ПО | Да | Ограниченный |
9. Итоги: чек-лист корректной конвертации
- Определите, какой разделитель устроит приёмную систему (чаще
;для RU,,для EN). - Всегда сохраняйте в UTF-8 (если не уверены — с BOM).
- Перед конвертацией разъедините объединённые ячейки.
- Для дат используйте ISO-формат
YYYY-MM-DD. - Проверьте результат в текстовом редакторе (Notepad++, VS Code).
- Если файл весит > 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.
Источники и нормативные документы
- Open XML SDK - XLSX structure
- RFC 4180 - CSV format
- Pandas documentation - read_excel