x++ code to import data from excel to D365 FnO
We can also import data through code in D365 FO. Data import through code in D365 works differently than Ax2012 since cloud services.
Import Class
we are trying to import data from Excel to D365FO through the following code.
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.ExcelPackage;
using OfficeOpenXml.ExcelRange;
class EmplAttendance
{
public void run()
{
this.updateDailyAttendance();
}
void updateDailyAttendance()
{
System.IO.Stream stream;
ExcelSpreadsheetName sheeet;
FileUploadBuild fileUpload;
DialogGroup dlgUploadGroup;
FileUploadBuild fileUploadBuild;
FormBuildControl formBuildControl;
EmplAttendance_CFS 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’);
str COMVariant2Str(COMVariant _cv)
{
switch (_cv.variantType())
{
case COMVariantType::VT_BSTR:
return _cv.bStr();
case COMVariantType::VT_EMPTY:
return ”;
default:
throw error(strfmt(“@SYS26908”, _cv.variantType()));
}
}
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;
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++)
{
str Emplid;
TransDate WorkingDate;
emplid = (range.get_Item(i, 1).value);
WorkingDate = str2Date((range.get_Item(i, 2).value),123);
select * from emplTimeAttendance
where emplTimeAttendance.EmplId = = Emplid
&& emplTimeAttendance.WorkingDate = = WorkingDate;
if(emplTimeAttendance) //if record already exists update it
{
emplTimeAttendance.selectForUpdate(true);
emplTimeAttendance.Timein = any2Str(range.get_Item(i, 3).value);
emplTimeAttendance.Timeout = any2Str(range.get_Item(i, 4).value);
emplTimeAttendance.OT = any2Real(range.get_Item(i, 5).value);
ttsbegin;
emplTimeAttendance.update();
ttscommit;
}
Else //insert the new record
{
insertTimeAttendance.EmplId = (range.get_Item(i, 1).value);
insertTimeAttendance.WorkingDate = str2Date((range.get_Item(i, 2).value),123);
insertTimeAttendance.Timein = any2Str(range.get_Item(i, 3).value);
insertTimeAttendance.Timeout = any2Str(range.get_Item(i, 4).value);
insertTimeAttendance.OT = any2Real(range.get_Item(i, 5).value);
insertTimeAttendance.insert();
}
}
}
}
else
{
error(“Error here”);
}
}
}
public static void main (Args args)
{
EmplAttendance emplDailyAttendanceImport;
emplDailyAttendanceImport = new EmplAttendance ();
emplDailyAttendanceImport.run();
}
}
Related posts:

Resolving SSL/TLS Secure Channel Trust Errors in Dynamics 365 Finance and Operations

How to change a Bill of material (BOM) item on a production order
How to Set Up a Local Development Environment for D365 Finance and Operations Without Azure Costs
![Shopify Meets Dynamics 365 Finance and Operations: A Guide to Integration [Part 2]](https://www.cloudfronts.in/wp-content/uploads/2024/12/DALL·E-2024-12-14-12.29.44-A-professional-illustration-depicting-the-integration-between-Shopify-and-Dynamics-365-Finance-and-Operations.-The-image-shows-Shopify-on-one-side-wit-150x150.webp)
