Как перевести файл Excel в TXT: все рабочие методы с примерами

При попытке открыть данные из 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 не сохраняет форматирование ячеек (цвета, шрифты), формулы преобразуются в статические значения, а пустые ячейки могут быть пропущены. Если ваша цель — импорт данных в другую систему (например, в или SQL), эти нюансы критичны.

⚠️ Внимание: Если в вашей таблице есть ячейки с переносами строк (Alt+Enter), при сохранении в TXT они превратятся в символ или будут удалены. Перед конвертацией замените перenosы на другой разделитель (например, |).

Способ 1: Сохранение через "Текст с разделителями" (стандартный метод)

Это базовый метод, который подходит для большинства задач, если правильно настроить параметры. Следуйте шагам:

  1. Откройте файл в Excel и перейдите в Файл → Сохранить как.
  2. В поле "Тип файла" выберите "Текстовый формат (*.txt)".
  3. Нажмите Сохранить — появится окно с предупреждением о потере данных. Подтвердите.
  4. В следующем окне выберите:
    • 📌 Разделитель: "Табуляция" (если данные будут импортироваться в программы, поддерживающие \t) или "Запятая" (для CSV-подобных форматов).
    • 📌 Кодировка: "Юникод (UTF-8)" — если нужна поддержка всех языков, или "Windows (по умолчанию)" — если файл будет открываться только в Windows.

После сохранения проверьте файл в Блокноте или Notepad++: данные должны быть разделены выбранным символом, а кириллица — отображаться корректно. Если видны "кракозябры", повторно сохраните файл с другой кодировкой.

Удалите объединённые ячейки|Замените переносы строк (Alt+Enter) на символ-разделитель (например, "|")|Проверьте длину строк (максимум 255 символов для ANSI)|Убедитесь, что в данных нет запятых (если используете CSV-разделитель)

-->

Способ 2: Экспорт через Power Query (для сложных таблиц)

Если ваша таблица содержит многоуровневые заголовки, объединённые ячейки или динамические диапазоны, стандартное сохранение в TXT не подойдёт. В этом случае используйте Power Query — инструмент для трансформации данных, встроенный в Excel 2016 и новее.

Инструкция:

  1. Выделите диапазон данных (включая заголовки).
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона (в группе "Получить и преобразовать данные").
  3. В открывшемся окне Power Query нажмите Файл → Закрыть и загрузить в....
  4. Выберите "Только создать подключение"OK.
  5. Снова перейдите на вкладку ДанныеСвойства подключенияЭкспортировать данные.
  6. В поле "Формат файла" укажите "Текстовый файл", выберите разделитель и кодировку.

Преимущество этого метода — возможность предварительной обработки данных: удаление пустых строк, замена разделителей, трансформация формата дат и т.д. Например, если в исходной таблице даты хранятся как 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

Чтобы использовать этот макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Insert → Module).
  3. Запустите макрос через 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

Как пользоваться:

  1. Загрузите файл на сайт (перетащите или выберите через кнопку).
  2. Укажите параметры:
    • 🔹 Разделитель столбцов (рекомендуется 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-файл в или SQL, и данные не загружаются, проверьте:

    • 🔹 Соответствие разделителей (в 1С часто требуется ;).
    • 🔹 Формат чисел (в Excel 1 000,5, а в TXT должно быть 1000.5).
    • 🔹 Наличие заголовков (некоторые системы требуют первой строки с именами столбцов).

    -->

    FAQ: Частые вопросы по конвертации Excel в TXT

    Можно ли сохранить в TXT несколько листов Excel одновременно?

    Стандартными средствами Excel — нет. Но можно:

    • 🔹 Использовать VBA-макрос, который экспортирует каждый лист в отдельный файл.
    • 🔹 В Power Query объединить листы в одну таблицу перед экспортом.
    • 🔹 Воспользоваться онлайн-конвертером с опцией "разбить по листам".
    Почему после конвертации числа отображаются в экспоненциальном формате (например, 1.23E+10)?

    Excel сохраняет числа в научной нотации, если они превышают 15 знаков. Чтобы избежать этого:

    1. Перед экспортом отформатируйте ячейки как текстовые (Ctrl + 1 → Числовой формат → Текстовый).
    2. Или используйте формулу =ТЕКСТ(A1; "0") для принудительного преобразования в строку.
    Как сохранить формулы в текстовом виде, а не их значения?

    Excel не экспортирует формулы в TXT. Обходные пути:

    • 🔹 Нажмите Ctrl + ` (гравис), чтобы отобразить формулы, затем скопируйте данные как текст.
    • 🔹 Используйте VBA-макрос, который считывает свойство .Formula у ячеек.
    Можно ли конвертировать Excel в TXT на Mac?

    Да, способы аналогичны:

    • 🔹 В Excel для Mac выберите Файл → Сохранить как → Текстовый формат.
    • 🔹 Используйте Numbers (встроенное ПО): Файл → Экспортировать в → TXT.
    • 🔹 Онлайн-конвертеры работают независимо от ОС.

    Обратите внимание: на Mac по умолчанию может использоваться кодировка UTF-8, тогда как в Windows — Windows-1251.

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

    Для пакетной обработки:

    1. Напишите VBA-макрос, который перебирает файлы в папке и экспортирует их в TXT.
    2. Используйте PowerShell или Python с библиотекой pandas:
      import pandas as pd
      

      df = pd.read_excel("input.xlsx")

      df.to_csv("output.txt", sep='\t', index=False, encoding='utf-8')

    3. Для Linux/Mac подойдёт ssconvert в скрипте bash.