X++ code to import records from excel in D365 F&O
Before Writing Logic we have to add required namespaces and reference packages , because export excel related x++ classes required below namespaces.
- Using System.IO;
- Using OfficeOpenXml;
- Using OfficeOpenXml.ExcelPackage;
- Using OfficeOpenXml.ExcelRange;
In addition to the basic reference packages , we also require to add additional reference packages directory
To do this update the model parameters
- Directory
- DirectoryUpgrade
Code:
// Part1: Create a dialouge object which will work as a import form and we can select the excel file by clicking the import button , once the file is fully uploaded it will keep the data in temporary storage.
Using System.IO;
Using OfficeOpenXml;
Using OfficeOpenXml.ExcelPackage;
Using OfficeOpenXml.ExcelRange;
class BASImportCSVData
{
public static void main(Args _args)
{
System.IO.Stream stream;
ExcelSpreadsheetName sheet;
FileUploadBuild fileUpload,fileUploadBuild;
DialogGroup dialogUploadGroup;
FormBuildControl formBuildControl;
BASEmployeeDetails employeeDetails;
Dialog dialog=new Dialog("Import Excel Form");
dialogUploadGroup=dialog.addGroup("@SYS54759");
formBuildControl=dialog.formBuildDesign().control(dialogUploadGroup.name());
fileUploadBuild=formBuildControl.addControlEx(classStr(fileUpload),"UploadExcel");
fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);
fileUploadBuild.fileTypesAccepted(".xlsx");
//if(dialog.run() && dialog.closedOk())
//{
// FileUpload fileUploadControl=dialog.formRun().control(dialog.formRun().controlId("Upload"));
FileUploadTemporaryStorageResult fileUploadResult=file::GetFileFromUser(classStr(FileUploadTemporaryStorageStrategy));
//fileUploadResult=fileUploadControl.getFileUploadResult();
/*------------------part 1 end---------------------*/
/*------------------part 2---------------------*/
if(fileUploadResult!= null && fileUploadResult.getUploadStatus())
{
stream=fileUploadResult.openResult();
using(ExcelPackage package= new ExcelPackage(stream))
{
int rowCount, iterator;
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;
for(iterator=2;iterator<=rowCount;iterator++)
{
select * from employeeDetails where employeeDetails.EmpId== range.get_Item(iterator,1).Value;
if(employeeDetails.EmpId == range.get_Item(iterator,1).Value)
{
update_recordset employeeDetails
setting EmpId = range.get_Item(iterator,1).Value ,
EmpName = range.get_Item(iterator,2).Value
where employeeDetails.EmpId == range.get_Item(iterator,1).Value;
}
else{
employeeDetails.EmpId = range.get_Item(iterator,1).Value;
employeeDetails.EmpName = range.get_Item(iterator,2).Value;
employeeDetails.insert();
}
}
}
}
/*------------------part 2 end---------------------*/
else
{
Error("error occured.");
}
}
}
Comments
Post a Comment