Как программно конвертировать файлы XLS в XLSX в 1С:Предприятие?

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

Часто в работе бухгалтеров и менеджеров возникают ситуации, когда поставщики присылают прайс-листы или отчеты в устаревшем формате .xls (Microsoft Office Excel 97-2003). Если ваша система загрузки настроена на работу только с современным форматом .xlsx, возникает конфликт. Давайте разберем, как автоматизировать этот процесс и избавить пользователей от рутинного ручного пересохранения файлов.

Анализ причин проблемы

Прежде чем приступать к написанию кода, важно понять, почему файл не открывается. Часто под расширением .xls скрывается не бинарный файл Excel 97-2003, а HTML-таблица или файл в формате .xlsx, который был ошибочно переименован. Если файл при попытке открытия через стандартные инструменты 1С выдает ошибку, необходимо проверить его содержимое. В ряде случаев для решения проблемы достаточно просто изменить расширение файла на .xlsx через стандартные файловые операции.

Решение через COM-объект Excel

Наиболее надежным способом программной конвертации, если на сервере или рабочем месте пользователя установлен Microsoft Excel, является использование COM-объект. Этот метод позволяет задействовать встроенные механизмы Excel для «перепаковки» файла в нужный формат.

Рассмотрим пошаговый алгоритм действий:

  1. Инициализация объекта Excel.Application.
  2. Открытие исходного файла с помощью метода WorkBooks.Open().
  3. Сохранение открытой книги в нужном формате с помощью метода SaveAs(), где ключевым является указание параметра FileFormat.
  4. Корректное завершение работы процесса Excel через Quit() для освобождения оперативной памяти.

Пример программной реализации

Для выполнения конвертации вы можете использовать следующий код в модуле вашей обработки:


// Выбираем файл через диалог
Если Диалог.Выбрать() Тогда
    ВыбранныйФайл = Диалог.ПолноеИмяФайла;
    
    // Создаем COM-объект для управления Excel
    Эксель = Новый COMОбъект("Excel.Application");
    
    // Открываем книгу
    КнигаЗагрузки = Эксель.WorkBooks.Open(ВыбранныйФайл);
    
    // Сохраняем файл в формате 56 (xls) или ином необходимом
    // Для xlsx можно использовать код формата 51
    КнигаЗагрузки.SaveAs(ВыбранныйФайл, 56);
    
    // Закрываем приложение
    Эксель.Quit();
    
    // Продолжаем дальнейшую обработку файла
    Объект.Файл = ВыбранныйФайл;
    ЧтениеExcel_через_ТД(ВыбранныйФайл);
КонецЕсли;

Важные рекомендации по автоматизации

При использовании COM-объектов важно учитывать следующие нюансы:

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

← На главную