Excel отчет из AX: библиотека MS Excel .NET

В статье о способах взаимодействия dynamics AX и Excel было описано несколько вариантов выгрузки данных в Excel. В предыдущей статье было описано как выгружать данные из Axapta используя COM объект. Цель данной статьи – демонстрация и разъяснение механизма выгрузки данных с помощью .NET библиотеки Microsoft.Office.Interop.Excel.

Предположим задача выгрузки данных поставлена примерно так: необходимо сделать Job, выгружающий данные из Axapta в Excel используя .NET библиотеку Excel. Для примера, будем выгружать 2 колонки из таблицы клиентов: Код клиента и Группу клиентов. Как известно, для того чтобы обращаться к пространству имен Microsoft.Office.Interop.Excel необходимо чтобы в AOT существовала одноименная ссылка на компонент с которым будет взаимодействовать Job.

Шаг 1 – Добавляем ссылку на библиотеку

Для этого необходимо открыть AOT, развернуть узел References и выбрать пункт “Добавить ссылку”:

В появившемся окне необходимо выбрать Microsoft.Office.Interop.Excel и нажать кнопку ОК. В результате в AOT должна появиться ссылка на библиотеку.

 Шаг 2 – Создаем следующий Job

static void AX_ExcelTutorial_Net(Args _args)
{
    Microsoft.Office.Interop.Excel.ApplicationClass     app;
    Microsoft.Office.Interop.Excel.Workbooks            wbs;
    Microsoft.Office.Interop.Excel.WorkbookClass        wb;
    Microsoft.Office.Interop.Excel.Range                range;
    Microsoft.Office.Interop.Excel.Range                cells;
    Microsoft.Office.Interop.Excel.WorksheetClass       worksheet;
    Microsoft.Office.Interop.Excel.Worksheets           worksheets;
    
    CustTable                                           custTable;
    System.Exception                                    ex;
    System.Type                                         type = System.Type::GetType("System.Reflection.Missing");
    System.Reflection.FieldInfo                         fieldInfo = type.GetField("Value");
    System.Object                                       missing = fieldInfo.GetValue(null);
    
    Int                                                 row;
    ;

    try
    {
        //Создаем экземпляр приложения
        app = new  Microsoft.Office.Interop.Excel.ApplicationClass();
        
        //Рабочие книги документа
        wbs         = app.get_Workbooks();
        
        //Рабочая книга
        wb          = wbs.Add(missing);
        
        //Листы рабочей книги
        worksheets  = wb.get_Worksheets();
        
        //Лист рабочей книги
        worksheet   = worksheets.get_Item(1);
        
        //Ячейки рабочей книги
        cells       = worksheet.get_Cells();
        
        //Выводим данные
        while select custTable
        {
            row++;
            
            //Колонка 1 - Код клиента
            range = cells.get_Item(row, 1);
            range.set_Value2(CLRInterop::getObjectForAnyType(custTable.AccountNum));
            
            //Колонка 2 - Группа клиентов
            range = cells.get_Item(row, 2);
            range.set_Value2(CLRInterop::getObjectForAnyType(custTable.CustGroup));
        }
        
        app.set_Visible(true);

    }
    catch
    {
        ex = ClrInterop::getLastException();

        while(ex)
        {
            info(ex.get_Message());
            ex = ex.get_InnerException();
        }
    }
}

В результате выполнения данного Job-а на экране появится окно Excel с выгруженными значениями из таблицы клиентов:

ax_net_sample

0 ответов

  1. Best Writing Service

    Get an expert academic writing assistance! We can write any paper on any subject within the tightest deadline.

  2. Best Writing Service

    Get an expert academic writing assistance! We can write any post on any subject within the tightest deadline.

  3. Best Writing Service

    Get an expert academic writing assistance. We can write any paper or post on any subject within the tightest deadline.