Dynamic 365中读取CSV文件

摘要:
Dynamic365开发中读取CSV文件与2012年略有不同。在Dynamic365中,文件先上传,然后下载。您需要通过FileUploadcontrol、Uploadstrategyclass和FileUploadTemporaryStorageStrategy类读取和下载文件。

 

 

 

Dynamic 365开发中对于读取CSV文件与2012略有不同。Dynamic 365中,对于文件的处理是先上传,后下载的过程。需要通过FileUpload control Upload strategy classFileUploadTemporaryStorageStrategy类来实现对于文件的读取和下载。

以下是一个简单的例子可供参考:

Dilaog窗体,读取文件上传到本地服务器中,以URL方式可以查看

 

 Public Object dialog()
    {
        DialogGroup      dialogGroup;
        FormBuildControl formBuildControl;
        FileUploadBuild  dialogFileUpload;
        #file
        ;
       
        dialog = super();
        dialogGroup = dialog.addGroup("File path");
        formBuildControl = dialog.formBuildDesign().control(dialogGroup.name());
        dialogFileUpload = formBuildControl.addControlEx(classstr(FileUpload), "dialogFileUpload");
        dialogFileUpload.style(FileUploadStyle::MinimalWithFilename);
        dialogFileUpload.baseFileUploadStrategyClassName(classstr(FileUploadTemporaryStorageStrategy));
        dialogFileUpload.fileTypesAccepted(".csv");
        dialogFileUpload.fileNameLabel("Select a file to upload");
       
        return dialog;
    }

 

得到控件名:

   protected FormControl getFormControl(DialogRunbase _dialog, str _controlName)
     {
          return _dialog.formRun().control(_dialog.formRun().controlId( _controlName));
     }

获取文件:

public boolean getFromDialog(  
    {
        boolean ret;
        ;
        ret = super();
        FileUpload     fileupload;
        fileupload  =   this.getFormControl(dialog, "dialogFileUpload");

        fileName      = fileupload.fileName();
        if (fileName == '')
        {
            checkFailed("File name empty");
        }

        return ret;
    }

读取数据:

 private void readData()
    {

  int                               startpos;
        int                              fieldCSVPos;
        container                   conData ;
        SysDictTable             sysDictTable;
        container                   currentLine;
        int                              totalOfLines;

        CommaTextStreamIo           localStream;


        FileUpload fileUploadControl = this.getFormControl(dialog,  “dialogFileUpload”);
       
        FileUploadTemporaryStorageResult fileUploadResult = fileUploadControl.getFileUploadResult();
       
        if (fileUploadResult != null && fileUploadResult.getUploadStatus())
        {
            fileName = fileUploadResult.getDownloadUrl();
        }
       
        localStream = CommaTextStreamIo::constructForRead(File::UseFileFromURL(fileName));
      
         
        if (localStream.status() != IO_Status::Ok)
        {
            throw error(strfmt('Is not possible to open the file. Error %1',enum2str(localStream.status())));
        }


        localStream.inFieldDelimiter("\,");
        localStream.inRecordDelimiter(" ");
   
        currentLine = localStream.read();

  startpos = 1;//定义读取数据的开始行标

        ttsbegin;
      
        while (currentLine)
        {

            if ( currentLine == connull() ) continue ;

            row++ ;

            if ( row  < startpos ) continue ;

           this.writeData(currentLine) ;
           //  info(strFmt('%1',conPeek(currentLine,2)));

            currentLine = localStream.read();
        }
        ttscommit;

    }

  欢迎大家讨论,一起学习。

想了解更多,可参考 https://community.dynamics.com/ax/b/365operationswithsukrut/archive/2017/09/28/d365fo-use-of-fileupload-control-to-read-csv-file

免责声明:文章转载自《Dynamic 365中读取CSV文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java连接Hive使用Zookeeper的方式[12] Jenkins下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

使用C#读写结构化的二进制文件

最近工作上遇到一个问题,就是有将近200万个CSV文件,每个CSV文件包含了成千上万条实验数据,CSV以一个不连续的整数值作为文件名,比如:1.CSV、2.CSV、3.CSV、5.CSV等等。另外又有200万个XML文件,每个XML文件的文件名与CSV的文件名一一对应,在这些XML文件中,定义了所对应的CSV实验数据文件的实验描述信息(比如实验名称、实验类...

将SqlServer的数据导出到Excel/csv中的各种方法 .

以下都只是介绍操作的原理,具体要求要在应用中具体分析改变。 如果大家有其他好的方法,请相互告知,共同学习。 1.       此方法常用在form或者Console Application中,使用时须用要添加Reference,具体做法:           右键点击项目添加“Add Reference”,在com组件下,选择“Microsoft Exc...

excel表 更改后缀名 xlsx转成csv csv转换xlsx

excel 转成CSV 步骤: 1、打开你需要转换的Excel表格。这里特别介绍一下多个数字的现象,我们知道,像身份证这些多位数字,在正常表格里都是会加上一个‘来使其显示的,或者换成“文本”模式的单元格形式:这里分别以文本形式以及加‘的数字形式,为大家讲解转换成CSV格式后的效果差别。 2、先看以文本形式保存的表格转换: 2.1然后,就可以点击左上角的o...

Asp.Net 之 基本控件FileUpload上传控件

1、前台代码: <asp:FileUpload ID="FileUpload" runat="server" /> <asp:Button ID="BtnUp" runat="server" onclick="BtnUp_Click" Text="上 传" /> <asp:Label ID="LabMsg" runat...

python os.path模块常用方法详解(转)

转自:https://www.cnblogs.com/wuxie1989/p/5623435.html os.path模块主要用于文件的属性获取,在编程中经常用到,以下是该模块的几种常用方法。更多的方法可以去查看官方文档:http://docs.python.org/library/os.path.html 1.os.path.abspath(path) ...

FileUpload控件使用初步

FileUpload控件使用初步: 1.实现文件上传 protected void btnSubmit_click(object sender, EventArgs e) { if (FileUpload1.HasFile == true) { string strErr = ""; //获得上传文件的大小 int filesize = FileUploa...