Today we will learn on how to import .xslx file into AX 2012 using a job.
1) Create a table TEC_Import:
Emp_Age int
Emp_Dob date
Emp_Id str
20
Emp_Name str 20
2) Write a AX 2012 job to import data into the above created table:
static void ImportFromExcel(Args _args)
{
#AviFiles
SysOperationProgress
progress = new
SysOperationProgress();
SysExcelApplication
application;
SysExcelWorkbooks
workbooks;
SysExcelWorkbook
workbook;
SysExcelWorksheets
worksheets;
SysExcelWorksheet
worksheet;
SysExcelCells
cells;
COMVariantType
type;
FileIoPermission
perm;
Name
name;
FileName
filename;
TEC_Import
importTable; //your table name
int row;
boolean first = true;
TEC_AGE
_EmpAge; //EDT
TEC_ID
_EmpID; //EDT
TEC_NAME
_EmpName; //EDT
TEC_DOB
_DOB; //EDT
#define.Filename('c:\\Book2.xlsx') //specify the
file path that you want to read
#define.FileMode('R')
;
perm = new
FileIOPermission(#FileName, #FileMode);
perm.assert();
application =
SysExcelApplication::construct();
workbooks = application.workbooks();
try
{
workbooks.open(#Filename);
}
catch (Exception::Error)
{
throw error("File cannot be opened.");
}
workbook
= workbooks.item(1);
worksheets
= workbook.worksheets();
worksheet
= worksheets.itemFromNum(1); //Here 1 is the worksheet Number
cells
= worksheet.cells();
progress.setCaption("Sales target data import...");
progress.setAnimation(#AviTransfer);
ttsBegin;
do
{
row++;
if(row==1)
{
first = false;
//to skip the header
}
else
{
_EmpID = cells.item(row, 1).value().bStr();
_EmpName
= cells.item(row, 2).value().bStr();
_DOB = cells.item(row, 3).value().date();
_EmpAge = any2int(cells.item(row,
3).value().toString());
importTable.Emp_Id = _EmpID;
importTable.Emp_Name = _EmpName;
importTable.Emp_Dob = _DOB;
importTable.Emp_Age = _EmpAge;
importTable.insert();
}
type
= cells.item(row+1, 1).value().variantType();
}
while (type !=
COMVariantType::VT_EMPTY);
ttsCommit;
application.quit();
No comments:
Post a Comment