Thursday, September 16, 2021

Excel Import in ax 2012

 static void ExcelImport(Args _args)

{

    int row = 1;

    int counter = 0;

    int column = 1;

    Dialog  _dialog;

    DialogField _file;

    SysExcelApplication application;

    SysExcelWorkbooks   workbooks;

    SysExcelWorkbook    workbook;

    SysExcelWorksheets  worksheets;

    SysExcelWorksheet   worksheet;

    SysExcelCells   cells;

    COMVariantType  type;

    ItemId itemId;

    EcoResProduct ecoResProduct;


    FileName    filename;


    _dialog = new Dialog("Please select the file to load");

    _dialog.addText("Select file:");

    _file   = _dialog.addField(ExtendedTypeStr("FilenameOpen"));

    _dialog.run();


    if (_dialog.closedOK())

    {

        application = SysExcelApplication::construct();

        workbooks = application.workbooks();

        //specify the file path that you want to read

        filename =_file.value(); //ExcelSheet File Name

        try

        {

            workbooks.open(filename);

        }

        catch (Exception::Error)

        {

            throw error('File cannot be opened');

        }

        workbook = workbooks.item(1);

        worksheets = workbook.worksheets();

        worksheet = worksheets.itemFromNum(1); //Here 1 is the worksheet Number

        cells = worksheet.cells();

        try

        {

            do

            {

                row++;


                if (cells.item(1, 1).value().bStr() == "ItemId")

                {

                    itemId  = strRTrim(strLTrim(cells.item(row, 1).value().bStr()));

                }

                else

                {

                    throw error("The 'ItemId' field should be in 1st column");

                }


                if (itemId)

                {

                    ecoResProduct = EcoResProduct::findByDisplayProductNumber(itemId,true);

                    if (ecoResProduct)

                    {

                        counter++;

                        //ttsBegin;

                        //ecoResProduct.ECommerceAvailable_BB = NoYes::No;

                        //ecoResProduct.update();

                        //ttsCommit;


                    }

                    else

                    {

                         info(strFmt("Item %1 not processed", itemId));

                    }

                }

                type = cells.item(row+1, 1).value().variantType();

            }


            while (type != COMVariantType::VT_EMPTY);

            info(strFmt("%1 item updated", counter));

        }

        catch (Exception::Error)

        {

            workbooks.close();

            CodeAccessPermission::revertAssert();

            application.quit();

            ttsabort;

        }

        workbooks.close();

        CodeAccessPermission::revertAssert();

        application.quit();

    }

}