最新消息:ww12345678 的部落格重装上线,希望大家继续支持。

D365FO:从 Azure 文件共享读取 CSV 文件 / D365FO: Read CSV file from Azure File Share

网络文摘 William 179浏览 0评论

Purpose:

The purpose of this post is to demonstrate how we can read a CSV file from Azure File Share in X++.

Application:

Dynamics 365 Finance and Operations

Prerequisites:

  • Azure file storage account must be configured in Azure Portal
  • File shares must be configured under this Azure file storage account
  • Access permissions must be configured for this Azure file storage account

Disclaimer:

This post is only for sharing knowledge. Do not use this code as is in a Production environment.

Business requirement:

Read a CSV file from Azure file share.

Solution:

Please find the code below to read a CSV file from Azure File Share. The code reads ABN numbers from a CSV file. The file has only a single column of ABN numbers with a single number per line.

Code

using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Microsoft.WindowsAzure.Storage.File;

class MAKCloudStorageFileManager
{
    #File
    #define.delimiterField(',')

    public static void main(Args _args)
    {
        #OCCRetryCount

        System.IO.MemoryStream memoryStream;
        System.String          storageAccountName;
        System.String          keyValue;

        CloudStorageAccount    storageAccount;
        CloudFileClient        fileClient;
        CloudFileShare         fileShare;
        CloudFileDirectory     fileDirectoryRoot;
        CloudFileDirectory     fileDirectory;
        CloudFile              file;

        TextStreamIo           textStreamIo;
        VendTable              vendTable;
        VATNum                 vendABN;
        Counter                counter;
        container              rec;

        storageAccountName     = "AzureStorageAccountName";
        keyValue               = "KeyValueString";
        var storageCredentials = new Microsoft.WindowsAzure.Storage.Auth.StorageCredentials(storageAccountName, keyValue);
        storageAccount         = new Microsoft.WindowsAzure.Storage.CloudStorageAccount(storageCredentials, true);
        fileClient             = storageAccount.CreateCloudFileClient();
        fileShare              = fileClient.GetShareReference('AzureFileShareName');
 
        if (fileShare.Exists(null, null))
        {
            fileDirectoryRoot = fileShare.GetRootDirectoryReference(); 
            fileDirectory     = fileDirectoryRoot.GetDirectoryReference("Folder/Subfolder");
 
            if (fileDirectory.Exists(null, null))
            {
                file = fileDirectory.GetFileReference('File.csv');
 
                if (file.Exists(null, null))
                {
                    memoryStream = new System.IO.MemoryStream();
                    file.DownloadToStream(memoryStream, null, null, null);
                    textStreamIo = TextStreamIo::constructForRead(memoryStream);

                    try
                    {
                        if (textStreamIo)
                        {
                            if (textStreamIo.status())
                            {
                                throw Global::error("@SYS52680");
                            }

                            textStreamIo.inFieldDelimiter(#delimiterField);
                            textStreamIo.inRecordDelimiter(#delimiterCRLF);
                            counter = 0;

                            while (!textStreamIo.status())
                            {
                                rec = textStreamIo.read();

                                if (conLen(rec))
                                {
                                    vendABN = conPeek(rec, 1);

                                    info(strFmt("%1", vendABN));
                                }
                            }
                        }
                    }
                    catch (Exception::Error)
                    {
                        error("An error occured. Please contact your system administrator.");
                    }
                }
            }
        }
    }

}
We can use Microsoft Azure Storage Explorer to browse files stored in Azure File Share or Azure Blob Containers.
You can run the class by using the runnable class URL below.
https://devaos.axcloud.dynamics.com/?cmp=DAT&mi=SysClassRunner&cls=MAKCloudStorageFileManager
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址