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

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

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.