Как открыть файлы MXL от 1С:Предприятия 8 в Excel и работает ли старая библиотека mxl2xl.dll?

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

Во времена господства платформы 1С:Предприятие 7.7 разработчики и системные администраторы активно использовали удобную библиотеку mxl2xl.dll. Этот конвертер прописывался в реестре операционной системы Windows и позволял Microsoft Excel напрямую импортировать файлы табличных документов 1С с расширением .mxl. С переходом на платформу 1С:Предприятие 8 пользователи столкнулись с проблемой: старый конвертер перестал открывать новые файлы.

В этой статье мы подробно разберем, почему старая библиотека больше не работает, проанализируем изменения в структуре файлов и рассмотрим современные эффективные способы конвертации табличных документов 1С в форматы Excel.

Почему библиотека mxl2xl.dll не работает с файлами 1С 8.х?

Давайте выясним причину, по которой старый конвертер оказался бесполезен для современных версий платформы. Все дело в кардинальном изменении внутренней структуры файлов .mxl:

  1. Формат 1С 7.7: Файлы табличных документов в «семерке» использовали бинарный формат, построенный по технологии OLE Compound File (структурированное хранилище Microsoft). Библиотека mxl2xl.dll была разработана именно для парсинга этой бинарной структуры и трансляции ее в понятный для старых версий Excel формат.
  2. Формат 1С 8.х: Начиная с восьмой версии, формат табличного документа стал представлять собой сжатый ZIP-архив. Внутри этого архива находятся файлы в формате XML, которые описывают структуру таблицы, стили оформления, параметры шрифтов, геометрические размеры строк и колонок, а также внедренные объекты.

Поскольку mxl2xl.dll является закрытой 32-битной библиотекой, созданной задолго до появления формата XML в 1С, она физически не способна распаковать ZIP-контейнер и обработать XML-данные. Более того, современные версии Microsoft Office перешли на 64-битную архитектуру, в которой старые 32-битные библиотеки конвертеров в принципе не могут быть инициализированы.

Альтернатива 1: Использование утилиты «1С:Предприятие — Работа с файлами»

Рассмотрим отличную официальную альтернативу, которую предоставляет фирма 1С. Это специальное бесплатное программное обеспечение «1С:Предприятие — Работа с файлами». Данное приложение представляет собой технологическую среду, которая позволяет просматривать, редактировать и сохранять файлы табличных документов .mxl без необходимости установки полноценной платформы 1С и приобретения клиентских лицензий.

Преимущества использования этой утилиты:

Разберем по шагам, как можно использовать утилиту для автоматической конвертации группы файлов с помощью командной строки. Допустим, нам необходимо преобразовать файл report.mxl в формат Excel. Мы можем составить скрипт автоматизации следующего вида:


"C:\Program Files\1CV8\Common\1cv8.exe" /ConvertFiles "C:\Docs\report.mxl" -To "C:\Docs\report.xlsx"

Использование параметров командной строки позволяет системным администраторам интегрировать конвертацию в любые сторонние бизнес-процессы и планировщики задач без привлечения программистов 1С.

Альтернатива 2: Прямое сохранение из программного кода 1С

Если у вас есть доступ к конфигуратору или вы разрабатываете собственную обработку, самым правильным и надежным решением будет сохранение табличного документа в формат Excel непосредственно в момент его формирования в 1С. Современная платформа 1С:Предприятие 8 (начиная с версии 8.3.6) обладает мощными встроенными механизмами экспорта, которые сохраняют разметку, цвета, шрифты, объединения ячеек и даже группировки строк.

Проанализируем пример кода, выполняющего сохранение табличного документа на диск в формате XLSX:


&НаСервере
Процедура СохранитьТабличныйДокументВExcel(ТабличныйДокумент, ПутьКФайлу)
    
    // Проверим, что табличный документ содержит данные
    Если ТабличныйДокумент.ВысотаТаблицы = 0 Тогда
        ВызватьИсключение "Табличный документ пуст. Сохранение невозможно.";
    КонецЕсли;
    
    // Выполняем запись в формате XLSX (Excel 2007 и выше)
    Попытка
        ТабличныйДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.XLSX);
        Сообщить("Файл успешно сохранен по пути: " + ПутьКФайлу);
    Исключение
        ЗаписьЖурналаРегистрации("КонвертацияВExcel",
            УровеньЖурналаРегистрации.Ошибка,
            ,
            ,
            ОписаниеОшибки());
        ВызватьИсключение "Ошибка при сохранении файла: " + КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
    КонецПопытки;
    
КонецПроцедуры

В данном коде мы используем объект ТипФайлаТабличногоДокумента. При необходимости мы можем заменить ТипФайлаТабличногоДокумента.XLSX на устаревший формат ТипФайлаТабличногоДокумента.XLS97 (совместимый с Excel 97-2003), однако использование современного формата XLSX предпочтительнее, так как он снимает ограничения на максимальное количество строк (более 65 536) и обеспечивает меньший размер файла на диске.

Альтернатива 3: Самостоятельный парсинг структуры MXL

Поскольку формат MXL в 1С:Предприятии 8 является открытым и представляет собой XML в ZIP-архиве, разработчики могут обойтись без использования объектов 1С для извлечения данных. Рассмотрим этот процесс концептуально:

  1. Переименуйте расширение файла с .mxl на .zip.
  2. Распакуйте архив с помощью любого стандартного архиватора.
  3. Внутри вы обнаружите XML-файл (обычно с именем document.xml или аналогичным), содержащий узлы с описанием ячеек, их текстовых значений, формул и оформления.
  4. Используя стандартные библиотеки чтения XML (например, в Python, C# или Java), вы можете распарсить этот файл и перенести данные в любую СУБД или сформировать собственный Excel-файл с помощью специализированных библиотек сторонних языков программирования.

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

Резюме

Мы выяснили, что использовать библиотеку mxl2xl.dll для файлов современных версий 1С невозможно из-за изменения структуры хранения данных. Для решения задачи открытия файлов MXL в Excel следует использовать современный инструментарий: бесплатную программу «1С:Работа с файлами» для ручной или пакетной конвертации, либо задействовать метод Записать() объекта ТабличныйДокумент непосредственно в коде платформы 1С:Предприятие 8.

← На главную