Как сделать отчет из C# проекта в МоиОтчеты Облако

Как сделать отчет из C# проекта в МоиОтчеты Облако

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

Сейчас всё больше появляется сервисов, которые предоставляют облачные решения для бизнеса, например, МоиОтчеты Облако. Наш сервис избавляет команду разработчиков от лишней работы, вам больше не нужно думать о том, как разворачивать проект, где лучше всего и выгоднее будет арендовать или же покупать сервера, а также какие технологии для развертывания использовать. Все эти вопросы мы уже решили, вам остается только воспользоваться.

А как использовать МоиОтчеты Облако?

И в этой статье разберем пример того, как с помощью SDK FastReport создавать отчеты и экспортировать их в любой удобный для вас формат.

Для начала создадим проект и добавим в него nuget пакет FastReport.Cloud.SDK.Web. Благодаря эту пакету мы сможем удобно общаться c МоиОтчеты Облако без использования API.

Также нам понадобится шаблон отчета. В этом примере будет использован Box.frx из нашего Demo:

Шаблон Box.frx

После создания проект и добавления в него всех нужных зависимостей, можно перейти к разбору примера.

В самом начале необходимо создать api ключ в рабочем пространстве МоиОтчеты Облако, для этого переходим по ссылке https://облако.моиотчеты.рф/

Нажимаем на вкладку с API ключами и создаем новый. Если ключ уже есть, то его можно просто скопировать, нажав правой кнопкой по нему и выбрав в выпадающем списке действие.

Создание и копирование api ключа

После получения API ключа возвращаемся обратно в наше приложение. Записываем ключ в отдельную переменную как на примере ниже:

private const string ApiKey = "ваш API ключ";

Дальше нужно создать основные объекты, которые будем использовать в программе:

var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://облако.моиотчеты.рф"); 
 httpClient.DefaultRequestHeaders.Authorization = new FastReportCloudApiKeyHeader(ApiKey);
var subscriptions = new SubscriptionsClient(httpClient);
var rpClientTemplates = new TemplatesClient(httpClient);
var rpClientExports = new ExportsClient(httpClient);
var downloadClient = new DownloadClient(httpClient);
var subscription = (await subscriptions.GetSubscriptionsAsync(0, 10)).Subscriptions.First();
var templateFolder = subscription.TemplatesFolder.FolderId;
var exportFolder = subscription.ExportsFolder.FolderId;

После этого переходим к этапу создания отчета для облака. Сделать это можно вот так:

TemplateCreateVM templateCreateVM = new TemplateCreateVM()
{
Name = "box.frx",
Content = Convert.FromBase64String(TestData.BoxReport) 
//передаем frx файл в байтовом формате
};

В примере выше мы уже имеем отчет в байтовом формате. Если у вас есть файл в формате frx, то можно воспользоваться вот этим примером:

TemplateCreateVM templateCreateVM = new TemplateCreateVM()
{
Name = "box.frx",
Content = File.ReadAllBytes("path to report") 
//передаем файл frx в байтовом формате по пути
};

Объект TemplateCreateVM вместе с отчетом загружаем в наше рабочее пространство: 

TemplateVM uploadedFile = await rpClientTemplates.UploadFileAsync(templateFolder, templateCreateVM);

Теперь экспортируем отчет в нужный нам формат. Для начала нужно определиться с форматом и названием будущего файла.

 ExportTemplateVM export = new ExportTemplateVM()
 {
 FileName = "box",
 Format = ExportFormat.Pdf 
 // формат, в который будет осуществляться экспорт
 };

Выполняем экспорт в формат PDF:

 ExportVM exportedFile = await rpClientTemplates.ExportAsync(uploadedFile.Id, export) as ExportVM;
 string fileId = exportedFile.Id;
 int attempts = 3;
 exportedFile = rpClientExports.GetFile(fileId);
 while (exportedFile.Status != FileStatus.Success && attempts >= 0)
 {
 await Task.Delay(1000);
 exportedFile = rpClientExports.GetFile(fileId);
 attempts--;
 }

Основная часть работы с отчетом закончена. Мы получили pdf файл из нашего отчета:

Получившийся экспорт

Если вы хотите скачать файл вручную, то перейдите в свое рабочее пространство и скачайте как на следующем примере: 

Скачивание экспортированного файла

Также файл можно скачать и с помощью SDK по этому примеру: 

 using (var file = await downloadClient.GetExportAsync(fileId))
 {
 using (var pdf = File.Open("report.pdf", FileMode.Create))
 {
 file.Stream.CopyTo(pdf);
 }
 }

Теперь вы знаете, как можно создавать, экспортировать, и скачивать файлы в МоиОтчеты Облако с помощью SDK.