Как мы знаем наш мир не стоит на месте, и новые технологии появляются практически каждый день. Сейчас уже не обязательно разворачивать всю инфраструктуру у себя в офисе, нанимать персонал, который будет следить за оборудованием, решать возникшие с этим оборудованием проблемы и прочие трудности.
Сейчас всё больше появляется сервисов, которые предоставляют облачные решения для бизнеса, например, МоиОтчеты Облако. Наш сервис избавляет команду разработчиков от лишней работы, вам больше не нужно думать о том, как разворачивать проект, где лучше всего и выгоднее будет арендовать или же покупать сервера, а также какие технологии для развертывания использовать. Все эти вопросы мы уже решили, вам остается только воспользоваться.
И в этой статье разберем пример того, как с помощью SDK FastReport создавать отчеты и экспортировать их в любой удобный для вас формат.
Для начала создадим проект и добавим в него nuget пакет FastReport.Cloud.SDK.Web. Благодаря эту пакету мы сможем удобно общаться c МоиОтчеты Облако без использования API.
Также нам понадобится шаблон отчета. В этом примере будет использован Box.frx из нашего Demo:
После создания проект и добавления в него всех нужных зависимостей, можно перейти к разбору примера.
В самом начале необходимо создать api ключ в рабочем пространстве МоиОтчеты Облако, для этого переходим по ссылке https://облако.моиотчеты.рф/
Нажимаем на вкладку с 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.