как читать данные из хранилища BLOB-объектов и получать к ним доступ с помощью приложения-функции Azure

У меня есть CSV-файл в моем хранилище BLOB-объектов, и мне нужно запускать его каждый день. Поэтому я использую запуск по таймеру в приложении-функции Azure. Я могу получить данные файла CSV. в моем лазурном приложении-функции

  • как читать и записывать данные CSV-файла и сохранять их в .xlsx файле

  • если мне нужно использовать привязки Я новичок в этой концепции, пожалуйста, помогите мне в этом с некоторыми примерами

Приложение "Моя функция":

public static class Function1`
{
   
  [FunctionName("Function1")]

    public static void Run([TimerTrigger("0 */5 * * * *")]TimerInfo myTimer, ILogger log)
    {
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
       
        try
        {
          
            var ConnectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
            // Setup the connection to the storage account
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
            // Connect to the blob storage
            CloudBlobClient serviceClient = storageAccount.CreateCloudBlobClient();
            // Connect to the blob container
            CloudBlobContainer container = serviceClient.GetContainerReference("csvfile");
            // Connect to the blob file
            CloudBlockBlob blob = container.GetBlockBlobReference("empchange.csv");
            // Get the blob file as text
            string contents = blob.DownloadTextAsync().Result;

           
        }
        catch (Exception ex)
        {

            Console.WriteLine(ex);
        }
    }
}

comment
Обновляется ли CSV-файл каждый день? Если это так, вы также можете использовать BlobTrigger, а затем вы можете использовать привязки и сэкономить лишние строки доступа к учетной записи хранения, контейнеру, а затем к BLOB-объекту.   -  person MarleneHE    schedule 20.09.2020


Ответы (1)


как читать и записывать данные CSV-файла и сохранять их в .xlsx файле

Если вы хотите читать и записывать файлы CSV, вам необходимо установить CsvHelper NuGet.

CsvHelper предлагает вам множество примеров, чтобы узнать, как читать и писать файлы csv. Я написал для вас образец кода для чтения файлов csv.

Данные Excel

Id,Name,Age
1,2,3

Образец кода

    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([TimerTrigger("0 */1 * * * *")] TimerInfo myTimer, ILogger log)
        {
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");

            try
            {
                var ConnectionString = Environment.GetEnvironmentVariable("AzureWebJobsStorage");
                // Setup the connection to the storage account
                CloudStorageAccount storageAccount = CloudStorageAccount.Parse(ConnectionString);
                // Connect to the blob storage
                CloudBlobClient serviceClient = storageAccount.CreateCloudBlobClient();
                // Connect to the blob container
                CloudBlobContainer container = serviceClient.GetContainerReference("csvfile");
                // Connect to the blob file
                CloudBlockBlob blob = container.GetBlockBlobReference("empchange.csv");
                
                using (var memoryStream = new MemoryStream())
                {
                    blob.DownloadToStreamAsync(memoryStream).GetAwaiter().GetResult();
                    memoryStream.Position = 0;
                    using (var reader = new StreamReader(memoryStream))
                    using (var csv = new CsvReader(reader, CultureInfo.CurrentCulture))
                    {
                        var records = csv.GetRecords<Foo>();
                        foreach (Foo item in records)
                        {
                            Console.WriteLine(item.Name);
                        }
                    }

                }
            }
            catch (Exception ex)
            {

                Console.WriteLine(ex);
            }
        }
    }


    public class Foo
    {
        public int Id { get; set; }
        public int Name { get; set; }
        public int Age { get; set; }
    }

Что касается преобразования файла csv в файл .xlsx, я видел это post, он должен решить вашу проблему.

если мне нужно использовать привязки Я новичок в этой концепции, пожалуйста, помогите мне в этом с некоторыми примерами

Вы можете использовать привязку, но ваш подход может достичь той же цели. Не думаю, что вам нужно менять свой подход. Вы можете узнать о концепции привязки из официального документа.

person Frank Gong    schedule 14.09.2020