Как распарсить данные XLS-файла в 1С без использования библиотек Excel?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Часто при разработке интеграций возникает необходимость прочитать данные из файла формата XLS (старый формат Excel 97-2003) средствами платформы 1С. Основная сложность заключается в том, что встроенный механизм ТабличныйДокумент не всегда корректно обрабатывает структуру таких файлов, особенно если они были созданы сторонними системами или содержат специфические метаданные. Давайте разберем, как диагностировать и решить эту проблему.

Диагностика проблемы

Прежде чем менять код, необходимо убедиться, что 1С вообще видит структуру файла. Первым делом воспользуемся методом Показать() для объекта ТабличныйДокумент. Если после вызова метода 1С открывает пустую форму, значит, алгоритм чтения не может распознать поток данных в файле.

Также важно проверить, не является ли файл «битым» или заблокированным. Если при открытии файла через интерфейс 1С (Файл -> Открыть) данные видны, а через программный Прочитать() — нет, значит, проблема кроется во внутренней структуре файла, которую 1С интерпретирует как неверную.

Метод чтения через ТабличныйДокумент

Базовый подход к чтению табличного документа выглядит следующим образом. Разберем его по шагам:


табДок = Новый ТабличныйДокумент;
Попытка
    табДок.Прочитать(Путь, СпособЧтенияЗначенийТабличногоДокумента.Значение);
Исключение
    Сообщить(ИнформацияОбОшибке().Описание);
    Возврат;
КонецПопытки;

КоличествоСтрок = табДок.ВысотаТаблицы;
// Обработка данных
Для НомерСтроки = 1 По КоличествоСтрок Цикл
    // Чтение значений ячеек
КонецЦикла;

Если КоличествоСтрок возвращает 1 или 0, хотя в Excel вы видите 13 строк, это говорит о том, что парсер 1С не смог корректно распарсить «бинарник» формата XLS. Рассмотрим способы исправления.

Способы решения проблемы

Если стандартный метод чтения не срабатывает, рекомендуем выполнить следующие действия:

  1. Очистка структуры файла. Часто внутри файла сохраняются примечания, скрытые объекты, связи или формулы, которые препятствуют чтению. Откройте файл в Excel и сохраните его как «Книга Excel 97-2003». Это пересоберет внутреннюю структуру потоков, удалив лишний «мусор».
  2. Удаление лишних элементов. Иногда помогает удаление первой пустой строки или очистка примечаний на листе.
  3. Пересохранение. Попробуйте сохранить файл в формат XLSX (OpenXML). Платформа 1С работает с XLSX значительно лучше, так как этот формат является XML-структурой внутри ZIP-архива, которую 1С парсит нативно без ошибок.
  4. Проверка через новый файл. Создайте пустую книгу Excel, скопируйте данные из исходного файла и вставьте их через «Специальная вставка» -> «Значения» в новую книгу. Сохраните результат. Это самый эффективный способ «вылечить» файл от поврежденных метаданных.

Альтернативные подходы к чтению данных

Если файл принципиально не читается ТабличнымДокументом, можно попробовать альтернативные методы:

Использование текстовых режимов

В методе Прочитать() попробуйте изменить параметр СпособЧтенияЗначенийТабличногоДокумента. По умолчанию стоит Значение, но переключение на Текст иногда позволяет вытянуть данные, которые игнорируются при стандартном чтении.

Конвертация в CSV

Если автоматизация позволяет, наиболее надежным способом будет преобразование XLS в CSV (текст с разделителями). Такие файлы 1С читает идеально с помощью объекта ТекстовыйДокумент или через метод ПрочитатьСтроки(). Это снимает зависимость от версии офиса и структуры бинарного файла.

Заключение

Проблема «пустого» чтения XLS почти всегда связана с несовместимостью внутренней структуры файла с ожиданиями платформы 1С. Мы рекомендуем:

Следуя этим простым шагам, вы сможете обеспечить стабильную загрузку данных в систему 1С без необходимости установки сторонних библиотек или использования тяжелых COM-объектов.

← На главную