In this post we can see how to import CSV file using x++. I have done by using RunBase batch. Because user will upload more data and he want to run in batch.
Dialog:
Using RunBase Batch
class TerminationBatch extends RunBaseBatch
{
Filename filename;
dialog dialog;
#define.CurrentVersion(1)
#define.Version1(1)
#localmacro.CurrentList
fileName
#endmacro
client server static ClassDescription description()
{
return 'Upload CSV file';
}
protected boolean canRunInNewSession()
{
return false;
}
public Object dialog()
{
DialogGroup dialogGroup;
FormBuildControl formBuildControl;
FileUploadBuild dialogFileUpload;
// Set enumSet = new Set(Types::Enum);
dialog = super();
dialogGroup = dialog.addGroup('File picker');
formBuildControl = dialog.formBuildDesign().control(dialogGroup.name());
dialogFileUpload = formBuildControl.addControlEx(classstr(FileUpload), filename);
dialogFileUpload.style(FileUploadStyle::MinimalWithFilename);
dialogFileUpload.baseFileUploadStrategyClassName(classstr(FileUploadTemporaryStorageStrategy));
dialogFileUpload.fileTypesAccepted('.csv');
dialogFileUpload.fileNameLabel('Select worker data file');
return dialog;
}
static void main(Args _args)
{
TerminationBatch objClass = new TerminationBatch();
if (objClass.prompt())
{
objClass.runOperation();
}
}
public void run()
{
#File
container currentLine;
CommaTextStreamIo localStream;
str textFile;
FileUpload fileUploadControl = this.getFormControl(dialog, filename);
FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
if (fileUploadResult != null && fileUploadResult.getUploadStatus())
{
textFile = fileUploadResult.getDownloadUrl();
}
localStream = CommaTextStreamIo::constructForRead(File::UseFileFromURL(textFile));
if (localStream.status() != IO_Status::Ok)
{
throw error(strfmt('Is not possible to open the file. Error %1',enum2str(localStream.status())));
}
localStream.inFieldDelimiter(',');
while (localStream.status() == IO_Status::Ok)
{
currentLine = localStream.read();
if (!currentLine)
{
break;
}
try
{
Id = conPeek(currentLine, 1);
Date = conPeek(currentLine, 2);
// Remaining fields
}
catch (Exception::Error)
{
Throw (Exception::Error);
}
}
info('Success');
}
protected FormControl getFormControl(DialogRunbase dialog, str controlName)
{
return dialog.formRun().control(_dialog.formRun().controlId( controlName));
}
}Using Job.
AsciiStreamIo file; Array fileLines; FileUploadTemporaryStorageResult fileUpload; fileUpload = File::GetFileFromUser() as FileUploadTemporaryStorageResult; file = AsciiStreamIo::constructForRead(fileUpload.openResult()); if (file) { if (file.status()) { throw error("@SYS52680"); } file.inFieldDelimiter(','); file.inRecordDelimiter('\r\n'); } container record; while (!file.status()) { record = file.read(); if (conLen(record)) { info(strFmt("%1 - %2",conPeek(record,1),conPeek(record,2))); } }
Keep Daxing!!

No comments:
Post a Comment