Friday, September 4, 2020

Excel Import in D365 F & O

 /// <summary>
/// PMEUploadGereralJournalExcel class is used to import the journals
/// </summary>
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.ExcelPackage;
using OfficeOpenXml.ExcelRange;
class PMEUploadGereralJournalExcel
{
    /// <summary>
    /// excelimport used to import the journals
    /// </summary>
    public void excelImport()
    {
        System.IO.Stream                            stream;
        //FileUploadBuild                             fileUpload;
        DialogGroup                                 dlgUploadGroup;
        FileUploadBuild                             fileUploadBuild;
        FormBuildControl                            formBuildControl;
        PMEReverseLedgerGeneralJournalTable         reverseJournal;
        PMEReverseJournal                           reversalCreation = new PMEReverseJournal();
        //PMEReverseLedgerJournalCreation             journalCreation = new PMEReverseLedgerJournalCreation();
        Dialog                                      dialog = new Dialog("@PME:ImportDataFromExcel");
        dlgUploadGroup          = dialog.addGroup("@SYS54759");
        formBuildControl        = dialog.formBuildDesign().control(dlgUploadGroup.name());
        fileUploadBuild         = formBuildControl.addControlEx(classstr(FileUpload), "@PME:Upload");
        fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);
        fileUploadBuild.fileTypesAccepted('.xlsx');
        if (dialog.run() && dialog.closedOk())
        {
            FileUpload fileUploadControl     = dialog.formRun().control(dialog.formRun().controlId("@PME:Upload"));
            FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
            if (fileUploadResult != null && fileUploadResult.getUploadStatus())
            {
                stream = fileUploadResult.openResult();
                using (ExcelPackage Package = new ExcelPackage(stream))
                {
                    int                         rowCount, i;
                    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;
                    
                    try
                    {
                        for (i = 2; i<= rowCount; i++)
                        {
                            ttsbegin;
                            select firstonly JournalNum from reverseJournal
                                where reverseJournal.JournalNum == range.get_Item(i, 1).value;
                            if(!reverseJournal)
                            {
                                reverseJournal.JournalNum = (range.get_Item(i, 1).value);
                                reverseJournal.Released   = NoYes::Yes;
                                reverseJournal.insert();
                                reversalCreation.createJournal(reverseJournal);
                            }
                            else
                            {
                                info(strFmt("@PME:ReverseJournalExist" ,range.get_Item(i, 1).value));
                            }
                            ttscommit;
                        }
                    }
                    catch(Exception::Error)
                    {
                        info("@PME:Error");
                                
                    }
                }
                Info("@PME:Sucessed");
            }
            else
            {
                error("@PME:Error");
            }
        }
    }
}






The above code create like below and manual choose file and import

No comments:

Post a Comment

TFS Work space configuration

Refer below link:  https://d365byjp.blogspot.com/2018/10/steps-to-configure-tfsvsts-workspace-in.html