О способах взаимодействия Axapta и Excel

Необходимо сделать быструю выгрузку данных из определенной таблицы? Нужен быстрый способ вывести информацию в Excel отчет? Как определиться с механизмом вывода? В данной статье мы расскажем про условную классификацию известных способов вывода данных в Excel.

Существует несколько вариантов выгрузки данных в Excel из Axapta, которые используются в зависимости от объема выгрузки, места исполнения программного кода (клиент/сервер) и требованиям к дизайну отчета.

Любой алгоритм построения Excel отчета условно можно разделить на 2 части: первая часть отвечает за взаимодействие с Excel, вторая реализует механизм вывода данных на лист рабочей книги. Способы взаимодействия для удобства условно можно разделить на 3 категории:

  • С использованием COM объекта
  • С использованием .NET библиотеки MS Excel
  • Без использования Excel (формирование файлов с разделителями или XML)

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

Вариант 1 – Использование COM объекта предусмотрено стандартным функционалом Axapta. В системе реализован класс COMExcelDocument_RU, обеспечивающий довольно удобное взаимодействие с Excel.

Плюсы данного метода – быстрая реализация задач связанных с выводом данных и довольно простой программный код. К недостаткам можно отнести низкое быстродействие взаимодействия через COM, проблемы проявляющиеся при построении отчетов на сервере AOS, а также ошибки при взаимодействии с новыми версиями Office (например с Excel 2012).

Вариант 2 – Использование библиотеки .NET “Microsoft.Office.Interop.Excel”. Данный метод не поддерживается в стандартном функционале, однако является более производительным и стабильным. Для реализации такого вывода необходимо разработать новый класс, обеспечивающий взаимодействие с Excel аналогично классу COMExcelDocument_RU.

К плюсам такого метода можно отнести надежное взаимодействие с Excel через .NETсборку, более высокую скорость взаимодействия и возможность строить Excelотчеты на сервере AOS (для этого необходимо чтобы на серверах AOSбыл установлен Excel). Также очень удобно то, что в случае обновления версии Officeвсе отчеты, реализованные данным способом будут работать корректно. Из недостатков данного метода наверно можно отметить только то что при первой реализации какого-нибудь отчета разработчику необходимо реализовать новый класс-обертку для взаимодействия с Excel.

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

Вариант 3 – формирование Excel отчетов без непосредственного взаимодействия. Такой вариант предусматривает выгрузку данных в файл, не обращаясь при этом к приложению Excel. Это очень хороший вариант для тех случаев, когда файл формируется например для отправки по почте или в подобных целях. Как известно, можно выгрузить данные с разделителем и поставить расширение “.csv”, в результате чего при открытии файла пользователь увидит excelотчет, который можно будет отредактировать или сохранить в другом формате.

Минус данного способа – отсутствие готовых классов по работе с Excel в таком режиме во всех версиях до AX 2012. В 2012-ой версии появилось семейство для работы с помощью XML (openXML) который позволяет выгружать данные в Excel не имея установленного Excel на сервере AOS. Главные плюсы – высокая скорость выгрузки, возможность формировать Excel отчеты на сервере AOS не имея установленного приложения Excel.

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

  • Место построения отчета (Клиент/Сервер)
  • Объем выгружаемых данных (Количество строк)
  • Требования к форматированию (Цвета, разделение на страницы и т.п.)

Комментарии закрыты.