При попытке открыть данные из Excel в сторонних программах (1С, базах данных или текстовых редакторах) часто требуется конвертация в формат .txt — но стандартное сохранение через "Файл → Сохранить как" не всегда даёт корректный результат. Проблема в том, что Microsoft Excel по умолчанию предлагает сохранить таблицу в .csv, а не в чистый текстовый формат, что приводит к искажению разделителей (запятые вместо табуляций) или сбою кодировки (вместо кириллицы — "кракозябры"). Чтобы избежать ошибок, нужно вручную настроить параметры экспорта — или использовать альтернативные методы.
В этой статье разберём 5 проверенных способов конвертации, включая скрытые настройки Excel, макросы VBA, онлайн-конвертеры и инструменты командной строки. Особое внимание уделим сохранению структуры данных: как правильно разделять столбцы (табуляцией, точкой с запятой или другим символом), избегать обрезки длинных строк и контролировать кодировку (UTF-8, Windows-1251). Если вам нужно перенести данные в MySQL, Python-скрипт или другую систему, где критичен точный формат — эти инструкции помогут избежать типичных ошибок.
Почему стандартное сохранение в TXT не работает
При выборе в меню Файл → Сохранить как → Текстовый формат (*.txt) Excel предлагает два варианта: с разделителями табуляции или с разделителями запятыми (фактически — CSV). Оба варианта имеют ограничения:
- 🔹 Табуляция: не все программы корректно считывают
\tкак разделитель, особенно если в ячейках есть собственные табуляции. - 🔹 Запятая: ломает структуру, если в данных есть запятые (например, в числах с разрядами или адресах).
- 🔹 Кодировка: по умолчанию используется ANSI (Windows-1251), что приводит к "кракозябрам" при открытии в Linux или macOS.
- 🔹 Обрезка данных: длинные строки (более 255 символов) могут быть усечены.
Кроме того, Excel не сохраняет форматирование ячеек (цвета, шрифты), формулы преобразуются в статические значения, а пустые ячейки могут быть пропущены. Если ваша цель — импорт данных в другую систему (например, в 1С или SQL), эти нюансы критичны.
⚠️ Внимание: Если в вашей таблице есть ячейки с переносами строк (Alt+Enter), при сохранении в TXT они превратятся в символ¶или будут удалены. Перед конвертацией замените перenosы на другой разделитель (например,|).
Способ 1: Сохранение через "Текст с разделителями" (стандартный метод)
Это базовый метод, который подходит для большинства задач, если правильно настроить параметры. Следуйте шагам:
- Откройте файл в Excel и перейдите в
Файл → Сохранить как. - В поле "Тип файла" выберите "Текстовый формат (*.txt)".
- Нажмите
Сохранить— появится окно с предупреждением о потере данных. Подтвердите. - В следующем окне выберите:
- 📌 Разделитель: "Табуляция" (если данные будут импортироваться в программы, поддерживающие
\t) или "Запятая" (для CSV-подобных форматов). - 📌 Кодировка: "Юникод (UTF-8)" — если нужна поддержка всех языков, или "Windows (по умолчанию)" — если файл будет открываться только в Windows.
- 📌 Разделитель: "Табуляция" (если данные будут импортироваться в программы, поддерживающие
После сохранения проверьте файл в Блокноте или Notepad++: данные должны быть разделены выбранным символом, а кириллица — отображаться корректно. Если видны "кракозябры", повторно сохраните файл с другой кодировкой.
Удалите объединённые ячейки|Замените переносы строк (Alt+Enter) на символ-разделитель (например, "|")|Проверьте длину строк (максимум 255 символов для ANSI)|Убедитесь, что в данных нет запятых (если используете CSV-разделитель)
-->
Способ 2: Экспорт через Power Query (для сложных таблиц)
Если ваша таблица содержит многоуровневые заголовки, объединённые ячейки или динамические диапазоны, стандартное сохранение в TXT не подойдёт. В этом случае используйте Power Query — инструмент для трансформации данных, встроенный в Excel 2016 и новее.
Инструкция:
- Выделите диапазон данных (включая заголовки).
- Перейдите на вкладку
Данные→Из таблицы/диапазона(в группе "Получить и преобразовать данные"). - В открывшемся окне Power Query нажмите
Файл → Закрыть и загрузить в.... - Выберите "Только создать подключение" →
OK. - Снова перейдите на вкладку
Данные→Свойства подключения→Экспортировать данные. - В поле "Формат файла" укажите "Текстовый файл", выберите разделитель и кодировку.
Преимущество этого метода — возможность предварительной обработки данных: удаление пустых строк, замена разделителей, трансформация формата дат и т.д. Например, если в исходной таблице даты хранятся как 31.12.2023, а целевой системе нужен формат 2023-12-31, это можно исправить в Power Query до экспорта.
Как исправить кодировку в Power Query
Если после экспорта в TXT кириллица отображается неправильно, откройте файл в Notepad++ и конвертируйте кодировку через меню "Кодировки → Преобразовать в UTF-8 без BOM". Это уберёт лишние служебные символы, которые могут мешать импорту в другие программы.
Способ 3: Конвертация через VBA-макрос (для автоматизации)
Если вам нужно регулярно конвертировать файлы Excel в TXT с одинаковыми настройками, напишите простой макрос. Он позволит сохранить время и избежать ручных ошибок. Ниже приведён код, который экспортирует активный лист в текстовый файл с разделителями табуляции и кодировкой UTF-8:
Sub ExportToTxt()
Dim fs As Object, ts As Object
Dim filePath As String
Dim i As Long, j As Long
Dim lastRow As Long, lastCol As Long
' Создаём объект файловой системы
Set fs = CreateObject("ADODB.Stream")
fs.Type = 2 ' Текстовый формат
fs.Charset = "utf-8" ' Кодировка UTF-8
fs.Open
' Определяем последний ряд и столбец с данными
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Cells(1, Columns.Count).End(xlToLeft).Column
' Экспортируем данные построчно
For i = 1 To lastRow
For j = 1 To lastCol
fs.WriteText CStr(Cells(i, j).Value)
If j < lastCol Then fs.WriteText vbTab ' Разделитель - табуляция
Next j
fs.WriteText vbCrLf ' Перенос строки
Next i
' Сохраняем файл
filePath = Environ("USERPROFILE") & "\Desktop\ExportedData.txt"
fs.SaveToFile filePath, 2 ' Перезаписать, если файл существует
fs.Close
MsgBox "Файл сохранён по пути: " & filePath, vbInformation
End Sub
Чтобы использовать этот макрос:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Запустите макрос через
F5или кнопкуRun.
Результат — файл ExportedData.txt на рабочем столе с данными, разделёнными табуляцией. Чтобы изменить разделитель, замените vbTab на нужный символ (например, ";" для точек с запятой).
⚠️ Внимание: Макрос не сохраняет формулы — только конечные значения ячеек. Если вам нужны формулы в текстовом виде, предварительно скопируйте их как текст (Ctrl + `для отображения формул, затемCtrl + C).
Способ 4: Онлайн-конвертеры (без установки ПО)
Если у вас нет доступа к Excel или нужно срочно конвертировать файл на чужом компьютере, используйте онлайн-сервисы. Они поддерживают не только .xlsx, но и устаревшие форматы (.xls, .ods). Лучшие варианты:
| Сервис | Макс. размер файла | Поддерживаемые разделители | Кодировка |
|---|---|---|---|
| Zamzar | 50 МБ | Табуляция, запятая, точка с запятой | UTF-8, Windows-1251 |
| Convertio | 100 МБ | Табуляция, запятая, пробел | UTF-8, ISO-8859-1 |
| Aconvert | 200 МБ | Любой символ (настраивается) | UTF-8, ANSI |
Как пользоваться:
- Загрузите файл на сайт (перетащите или выберите через кнопку).
- Укажите параметры:
- 🔹 Разделитель столбцов (рекомендуется
Tabдля универсальности). - 🔹 Кодировку (UTF-8 — если не уверены).
- 🔹 Разделитель строк (
CR+LFдля Windows).
- 🔹 Разделитель столбцов (рекомендуется
Преимущества онлайн-конвертеров:
- 🔹 Не нужно устанавливать программы.
- 🔹 Поддержка редких форматов (например,
.xlsb). - 🔹 Возможность пакетной конвертации (несколько файлов одновременно).
Недостатки:
- 🔸 Ограничение по размеру файла.
- 🔸 Риск утечки данных (не используйте для конфиденциальной информации).
- 🔸 Нет гарантии сохранения структуры (объединённые ячейки, формулы).
Стандартное сохранение в Excel|Power Query|VBA-макрос|Онлайн-конвертеры|Другой метод
-->
Способ 5: Командная строка (для автоматизации без Excel)
Если у вас установлен Microsoft Office, но вы предпочитаете работать через командную строку (например, для скриптов или пакетной обработки), используйте утилиту ssconvert из пакета Gnumeric (бесплатная альтернатива Excel для Linux/Windows). Установите её через официальный сайт или пакетный менеджер (apt install gnumeric для Ubuntu).
Команда для конвертации:
ssconvert "input.xlsx" "output.txt" --export-type=Gnumeric_stf:stf_csv --export-file-per-sheet --export-separator="TAB"
Параметры:
- 🔹
--export-separator: укажите"TAB",";"или другой разделитель. - 🔹
--export-file-per-sheet: создаёт отдельный TXT-файл для каждого листа. - 🔹
--export-charset=UTF-8: принудительно задаёт кодировку.
Для Windows можно использовать PowerShell с модулем ImportExcel:
Install-Module -Name ImportExcel -Force
Import-Xlsx "C:\path\to\file.xlsx" | Export-Csv "C:\path\to\output.txt" -Delimiter "`t" -Encoding UTF8 -NoTypeInformation
Этот метод подходит для автоматизации: например, если вам нужно ежедневно конвертировать отчёты из Excel в TXT для загрузки в базу данных.
-->
Типичные ошибки и как их избежать
Даже при правильной конвертации результат может оказаться некорректным. Рассмотрим самые частые проблемы и их решения:
| Проблема | Причина | Решение |
|---|---|---|
| Кракозябры вместо кириллицы | Неверная кодировка (ANSI вместо UTF-8) | Сохраните файл с кодировкой UTF-8 или откройте в Notepad++ и конвертируйте кодировку. |
| Данные в одном столбце | Неверный разделитель при импорте | Укажите правильный разделитель (табуляция, запятая) в целевой программе. |
| Обрезанные длинные строки | Ограничение ANSI (255 символов) | Используйте UTF-8 или разбивайте данные на несколько столбцов. |
| Пустые ячейки пропущены | Настройка экспорта в Excel | В макросе или Power Query явно укажите вывод пустых значений (например, замените их на "NULL"). |
Если вы импортируете TXT-файл в 1С или SQL, и данные не загружаются, проверьте:
- 🔹 Соответствие разделителей (в 1С часто требуется
;). - 🔹 Формат чисел (в Excel
1 000,5, а в TXT должно быть1000.5). - 🔹 Наличие заголовков (некоторые системы требуют первой строки с именами столбцов).
-->
FAQ: Частые вопросы по конвертации Excel в TXT
Можно ли сохранить в TXT несколько листов Excel одновременно?
Стандартными средствами Excel — нет. Но можно:
- 🔹 Использовать VBA-макрос, который экспортирует каждый лист в отдельный файл.
- 🔹 В Power Query объединить листы в одну таблицу перед экспортом.
- 🔹 Воспользоваться онлайн-конвертером с опцией "разбить по листам".
Почему после конвертации числа отображаются в экспоненциальном формате (например, 1.23E+10)?
Excel сохраняет числа в научной нотации, если они превышают 15 знаков. Чтобы избежать этого:
- Перед экспортом отформатируйте ячейки как текстовые (
Ctrl + 1 → Числовой формат → Текстовый). - Или используйте формулу
=ТЕКСТ(A1; "0")для принудительного преобразования в строку.
Как сохранить формулы в текстовом виде, а не их значения?
Excel не экспортирует формулы в TXT. Обходные пути:
- 🔹 Нажмите
Ctrl + `(гравис), чтобы отобразить формулы, затем скопируйте данные как текст. - 🔹 Используйте VBA-макрос, который считывает свойство
.Formulaу ячеек.
Можно ли конвертировать Excel в TXT на Mac?
Да, способы аналогичны:
- 🔹 В Excel для Mac выберите
Файл → Сохранить как → Текстовый формат. - 🔹 Используйте Numbers (встроенное ПО):
Файл → Экспортировать в → TXT. - 🔹 Онлайн-конвертеры работают независимо от ОС.
Обратите внимание: на Mac по умолчанию может использоваться кодировка UTF-8, тогда как в Windows — Windows-1251.
Как автоматизировать конвертацию для сотен файлов?
Для пакетной обработки:
- Напишите VBA-макрос, который перебирает файлы в папке и экспортирует их в TXT.
- Используйте PowerShell или Python с библиотекой
pandas:import pandas as pddf = pd.read_excel("input.xlsx")
df.to_csv("output.txt", sep='\t', index=False, encoding='utf-8')
- Для Linux/Mac подойдёт
ssconvertв скриптеbash.