Upload excel file and import data using file upload (X++)
Upload excel file and import data using file upload

Upload excel file and import data using file upload (X++)

No alt text provided for this image


Today we are going to see, upload excel file using file upload utility

Sometime we have requirement to upload excel file and import data using X++ using manual upload.

Below are the code to achieve this development:

public class XXXImportEventHandle
{
? ? [FormControlEventHandler(formControlStr(SalesTable, salesTable), FormControlEventType::Clicked)]
? ? public static void SalesUpload_OnClicked(FormControl sender, FormControlEventArgs e)
? ? {
? ? ? ? System.IO.Stream stream;


? ? ? ? OfficeOpenXml.ExcelWorksheet worksheet;
? ? ? ? OfficeOpenXml.ExcelRange? ? ?range;
? ? ? ? FileUploadTemporaryStorageResult fileUploadResult;
? ? ? ? FileUploadBuild? fileUpload;
? ? ? ? DialogGroup? ? ? dlgUploadGroup;
? ? ? ? FileUpload? ? ? ?fileUploadControl;
? ? ? ? FileUploadBuild? fileUploadBuild;
? ? ? ? FormBuildControl formBuildControl;
	ExcelSpreadsheetName sheeet;
? ? ? ? int? ? ? ? ? ? ? i, excelRowCount;


? ? ? ? Dialog dialog = new Dialog("Upload sales order excel file");
? ? ? ? dlgUploadGroup = dialog.addGroup("Upload file");
? ? ? ? formBuildControl = dialog.formBuildDesign().control(dlgUploadGroup.name());
? ? ? ? fileUploadBuild = formBuildControl.addControlEx(classstr(FileUpload), 'Upload');
? ? ? ? fileUploadBuild.fileTypesAccepted('.xlsx');? // Upload excel file only
? ? ? ? fileUploadBuild.style(FileUploadStyle::MinimalWithFilename);
? ? ? ? if (dialog.run() && dialog.closedOk())
? ? ? ? {
? ? ? ? ? ? fileUploadControl = dialog.formRun().control(dialog.formRun().controlId('Upload'));
? ? ? ? ? ? fileUploadResult? = fileUploadControl.getFileUploadResult();


? ? ? ? ? ? if (fileUploadResult != null && fileUploadResult.getUploadStatus())
? ? ? ? ? ? {
? ? ? ? ? ? ? ? stream = fileUploadResult.openResult();
? ? ? ? ? ? ? ? using (OfficeOpenXml.ExcelPackage package = new OfficeOpenXml.ExcelPackage(stream))
? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? Package.Load(stream);
? ? ? ? ? ? ? ? ? ? worksheet = package.get_Workbook().get_Worksheets().get_Item(1);
? ? ? ? ? ? ? ? ? ? range? ? ?= worksheet.Cells;
? ? ? ? ? ? ? ? ? ? excelRowCount = worksheet.Dimension.End.Row - worksheet.Dimension.Start.Row + 1;
? ? ? ? ? ? ? ? ? ? try
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? for (i = 2; i<= excelRowCount; i++)? // Start with 2 due to header excluded.
? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? salesTable? ? ? ? ? ? ? ? ?= XXXImportEventHandler::findSalesTable(range.get_Item(i, 1).value);
? ? ? ? ? ? ? ? ? ? ? ? ? ? salesTable.SalesId? ? ? ? ?= range.get_Item(i, 1).value;
? ? ? ? ? ? ? ? ? ? ? ? ? ? salesTable.CustAccount? ? ?= range.get_Item(i, 2).value;
			? ? // Sample code
? ? ? ? ? ? ? ? ? ? ? ? ? ? if(salesTable.RecId)
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ttsbegin;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? salesTable.update();? // To update existing record
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ttscommit;
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? ? ? else
? ? ? ? ? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? salesTableInsert = salesTable;
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? salesTableInsert.Insert();? ?// For new record
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? ? ? info("Data inserted succesfully");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? catch (Exception::Error)
? ? ? ? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? ? ? ? ttsabort;
? ? ? ? ? ? ? ? ? ? ? ? throw error("error during upload");
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? }
? ? }


? ??
? ? public static SalesTable findSalesTable(XXXX _xxx)
? ? {
? ? ? ? SalesTable salesTable;


? ? ? ? select salesTable
		where salesTable.Salesid== _xxx;
? ? ? ? ?
? ? ? ??
? ? ? ? if(salesTable.RecId)
? ? ? ? ? ? salesTable.selectForUpdate(true);
? ? ? ??
? ? ? ? return salesTable;
? ? }


}        
Vikram Reddy

MSDyn365FO |Technical Architect | Azure | Power Platform | PGDITM | BTech IT

1 年

Just wondering, what could be the business case to use file upload when we have robust framework like DMF. Which will have logs and have a better error handling.

要查看或添加评论,请登录

社区洞察

其他会员也浏览了