Сохранение отчета в облачные сервисы из кода пользовательского приложения

22.08.2017

В режиме предварительного просмотра вам доступны не только экспорты отчета, но и некоторые варианты сохранения отчета, например, Box, DropBox, GoogleDrive и другие. В меню «Сохранить» выделена специальная секция с вариантами сохранения отчета в различные облачные сервисы:

 

Нам доступны:

1)      Box;

2)      Dropbox;

3)      FastCloud;

4)      GoogleDrive;

5)      OneDrive;

6)      XMPP.

Последний вариант использует облачные сервис FastCloud для хранения и построения отчетов. По протоколу XMPP передается ссылка на отчет в jabber клиент. Использование этих вариантов сохранения не вызывает сложностей, если вручную задавать настройки в режиме предварительного просмотра. Но как же автоматизировать процесс сохранения, с помощью кода?

Об этом и пойдет речь в этой статье.

За исключением FastCloud все облачные сервисы используют авторизацию типа OAuth. Это протокол авторизации, который позволяет вам без использования реальных логина и пароля от сервиса дать доступ приложению к облачному сервису. При этом вы можете ограничить права доступа. Вам будет выдан идентификатор и секретный ключ, которые нужно использовать для авторизации.

Чтобы получить идентификатор (Client Id) и ключ (Client secret) вам нужно создать приложение и зарегистрировать его на OAuth сервере вашего облачного сервиса.

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

1)      Для сервиса Box:

Прежде всего необходимо добавить библиотеку FastReport:

using FastReport;

Создаем экземпляр класса ClientInfo, который будет содержать информацию для авторизации:

1
2
FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = 
new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret");

ClientInfo можетприниматьтрипараметра: ClientName, ClientId и ClientSecret. Внашемслучае, требуется ClientId и ClientSecret. Затем создаем клиент GoogleDrive для сохранения отчета:

1
2
FastReport.Cloud.StorageClient.GoogleDrive.GoogleDriveStorageClient client = 
new FastReport.Cloud.StorageClient.GoogleDrive.GoogleDriveStorageClient(clientInfo);

Создаем объект отчета и загружаем в него отчет:

1
2
Report report = new Report();
report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");

Если нужно сохранить отчет в формате отличном от нативного fpx (формат предварительного просмотра отчета), то нужно создать экземпляр экспорта:

1
 FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport();

 Сохраняем отчет с помощью клиента:

1
client.SaveReport(report, pdf);

Если вы сохраняете отчет в формате fpx, вместо второго параметра можно передать null:

1
 client.SaveReport(report, null);

2)  Для DropBox немного отличается. В рамках OAuth можно также использовать access token. Это ключ доступа, который генерируется в результате удачной авторизации. Передав такой токен, мы как бы восстанавливаем предыдущую авторизацию. Создаем клиент для DropBox и передаем ему access token в текстовом формате:

1
2
FastReport.Cloud.StorageClient.Dropbox.DropboxStorageClient drop = 
new FastReport.Cloud.StorageClient.Dropbox.DropboxStorageClient("accessToken");

Настройки прокси:

1
2
3
4
5
drop.ProxySettings.Server = "";
drop.ProxySettings.Port = 999; 
drop.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http;
drop.ProxySettings.Username = "Username";
drop.ProxySettings.Password = "Password";

Далее, как и в предыдущем примере:

1
2
 Report report = new Report();
 report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");

Сохраняем отчет:

1
 drop.SaveReport(report, null);

 3)  Для GoogleDrive:

1
2
3
FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = 
new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret");
GoogleDriveStorageClient client = new GoogleDriveStorageClient(clientInfo);

Настройки прокси, если нужно:

1
2
3
4
5
 client.ProxySettings.Server = "";
 client.ProxySettings.Port = 999; 
 client.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http;
 client.ProxySettings.Username = "Username";
 client.ProxySettings.Password = "Password";

Создаем отчет:

1
2
Report report = new Report();
report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");

Создаем экспорт:

1
FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport();

 Сохраняем отчет:                 

1
client.SaveReport(report, pdf);

 4)  Для OneDrive:

1
2
3
4
FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = 
new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret");
FastReport.Cloud.StorageClient.SkyDrive.SkyDriveStorageClient one = 
new FastReport.Cloud.StorageClient.SkyDrive.SkyDriveStorageClient(clientInfo);

Настройки прокси, если нужно:         

1
2
3
4
5
one.ProxySettings.Server = "";
 one.ProxySettings.Port = 999; 
 one.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http;
 one.ProxySettings.Username = "Username";
 one.ProxySettings.Password = "Password";

 Создаем отчет:

1
2
3
Report report = new Report();
report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");
one.SaveReport(report, null);

 5)  Для FastCloud тоже есть отличия. Здесь не используется протокол OAuth. Авторизация проводится по почтовому адресу и паролю. Создаем клиент FastCloud:

1
2
FastReport.Cloud.StorageClient.FastCloud.FastCloudStorageClient fast = 
new FastReport.Cloud.StorageClient.FastCloud.FastCloudStorageClient();

Присваиваем токен. Для формирования токена используем метод GetAccessToken:

1
fast.AccessToken = fast.GetAccessToken("email@mail.com", "password");

Создаем экземпляр экспорта:

1
2
3
4
5
FastReport.Export.RichText.RTFExport rich = 
new FastReport.Export.RichText.RTFExport();
Report report = new Report();
report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");
fast.SaveReport(report, rich);

 6)  Отправка отчета в Jabber(XMPP). Предварительно нам нужно создать xmpp клиент:

1
2
FastReport.Messaging.Xmpp.XmppMessenger messenger = 
new FastReport.Messaging.Xmpp.XmppMessenger("user@xmpp.jp", "password", "user@xmpp.jp");

 Если нужно настроить Proxy:

1
2
3
4
5
messenger.ProxySettings.Server = "server";
messenger.ProxySettings.Port = 999;
messenger.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http;
messenger.ProxySettings.Username = "username";
messenger.ProxySettings.Password = "password";

 Затем, или до этого, создаем объект отчета:

1
2
Report report = new Report();
report.Load(@"С:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");

 И передаем его xmpp клиенту:

1
messenger.SendReport(report, null);

Выполнив этот код, мы отправляем отчет в облачный сервис FastCloud и сообщение со ссылкой на отчет пользователю jabber. Ссылка в xmpp клиенте выглядит так:

https://cloud.fast-report.com/reports/3da0fcd3f76ac1f6d87c21df85f5d5e2

.NET FastReport Веб хранилище .NET FastReport Веб хранилище
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»