How to Import Records from Excel Using X++ Code in D365FO

using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.ExcelPackage;
using OfficeOpenXml.ExcelRange;
class RamImportdata
{
    public void run()
    {
        this.updateDailyAttendance();
    }
 
    void updateDailyAttendance()
    {
        System.IO.Stream               stream;
        ExcelSpreadsheetName     sheeet;
        FileUploadBuild                   fileUpload;
        DialogGroup                        dlgUploadGroup;
        FileUploadBuild                   fileUploadBuild;
        FormBuildControl               formBuildControl;
        Digitaldetail                       emplTimeAttendance, insertTimeAttendance, updateTimeAttendance;
        COMVariantType                type;
        Dialog                                   dialog =    new Dialog("Daily Attendance Imported");    
                       
 
        dlgUploadGroup          = dialog.addGroup("@SYS54759");
        formBuildControl        = dialog.formBuildDesign().control(dlgUploadGroup.name());
        fileUploadBuild         = formBuildControl.addControlEx(classstr(FileUpload), 'Upload');
        fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);
        fileUploadBuild.fileTypesAccepted('.xlsx');
 
       
        if (dialog.run() && dialog.closedOk())
        {
 
            FileUpload fileUploadControl     = dialog.formRun().control(dialog.formRun().controlId('Upload'));
            FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
            if (fileUploadResult != null && fileUploadResult.getUploadStatus())
            {
                stream = fileUploadResult.openResult();
                using (ExcelPackage Package = new ExcelPackage(stream))
                {
 
                    int                         rowCount, i,columncount,j,row=1;
                    str         purchase,Item_Id,Configuration,Product_key;
                    Package.Load(stream);
                    ExcelWorksheet   worksheet   = package.get_Workbook().get_Worksheets().get_Item(1);
                    OfficeOpenXml.ExcelRange    range       = worksheet.Cells;
                    rowCount           = (worksheet.Dimension.End.Row) - (worksheet.Dimension.Start.Row)  + 1;
                    columncount      = (worksheet.Dimension.End.Column);
                  
                    for (i = 2; i<= rowCount; i++)
                    {
 
                        if(emplTimeAttendance)   
 
                        {
                            emplTimeAttendance.selectForUpdate(true);
                            insertTimeAttendance.purchase         = any2Str(range.get_Item(i, 1).value);
                            emplTimeAttendance.Item_Id         =   any2Str(range.get_Item(i, 2).value);
                            emplTimeAttendance.Configuration   =   any2Str(range.get_Item(i, 3).value);
                            emplTimeAttendance.Product_key     =  any2Str(range.get_Item(i, 4).value);
 
                            ttsbegin;
 
                            emplTimeAttendance.update();
 
                            ttscommit;
 
                        }
 
                        Else     // insert the new record
 
                        {
 
                            insertTimeAttendance.purchase         = any2Str(range.get_Item(i, 1).value);                        
                            insertTimeAttendance.Item_Id         = any2Str(range.get_Item(i, 2).value);
                            insertTimeAttendance.Configuration    = any2Str(range.get_Item(i, 3).value);
                            insertTimeAttendance.Product_key      = any2Str(range.get_Item(i, 4).value);
                            insertTimeAttendance.insert();
 
                        }
 
                    }
 
                }
 
            }
 
            else
            {
                error("Error here");
            }
        }
    }
 
    public static void main (Args args)
    {
        RamImportdata     emplDailyAttendanceImport;
        emplDailyAttendanceImport = new RamImportdata ();
        emplDailyAttendanceImport.run();
    }
 
}

Comments