如何用代码将报表自动保存到云端
在预览模式下,你不仅可以访问报表的导出,还可以访问一些用于保存报表的选项,例如Box、DropBox、GoogleDrive等。在“保存”菜单中突出显示了一个特殊部分,其中包含用于将报表保存到各种云服务的选项:
我们可用的有:
- Box
- Dropbox
- FastCloud
- GoogleDrive
- OneDrive
- XMPP
后一个选项使用FastCloud云服务来存储和构建报表。XMPP协议将报表的链接发送给jabber客户端。如果你以预览模式手动设置首选项,使用这些保存选项并不困难。但是如何使用代码来实现自动保存呢?
本文将详细介绍这个解决方案。
除了FastCloud之外,所有的云服务都使用OAuth类型的授权。这是一种授权协议,允许你在不使用服务中的真实登录名和密码的情况下为应用程序提供对云服务的访问权限。但是,你可以限制访问权限。你将得到一个标识符和一个密钥,你需要使用它来授权。
要获取客户端ID和客户端密钥,你需要创建应用程序并将其注册到云服务的OAuth服务器上。
因此,我们需要至少指定两个参数来将报表保存到云服务。我们按照顺序一一讲解。
1. 对于Box服务:
首先,你需要添加FastReport库:
使用FastReport;我们创建一个ClientInfo类的实例,它将包含授权信息:
FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret");
ClientInfo 可以接受三个参数:ClientName、ClientId和ClientSecret。在我们的例子中,ClientId和ClientSecret是必需的。然后创建一个GoogleDrive客户端来保存报表:
FastReport.Cloud.StorageClient.GoogleDrive.GoogleDriveStorageClient client = new FastReport.Cloud.StorageClient.GoogleDrive.GoogleDriveStorageClient(clientInfo);
创建一个报表对象并将报表加载到该对象中:
Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");
如果要以非本地fpx格式(报表预览格式)保存报表,则需要创建一个导出实例:
FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport();
使用客户端保存报表:
client.SaveReport(report, pdf);
如果以fpx格式保存报表,则可以传递null而不是第二个参数:
client.SaveReport(report, null);
2. 对于DropBox则略有不同。在OAuth中,你也可以使用访问令牌。这是作为成功授权的结果而生成的访问密钥。通过这样一个令牌,我们似乎恢复了以前的授权。为DropBox创建一个客户端,并以文本格式传递访问令牌:
FastReport.Cloud.StorageClient.Dropbox.DropboxStorageClient drop = new FastReport.Cloud.StorageClient.Dropbox.DropboxStorageClient("accessToken");
代理设置:
drop.ProxySettings.Server = ""; drop.ProxySettings.Port = 999; drop.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; drop.ProxySettings.Username = "Username"; drop.ProxySettings.Password = "Password";
接下来,如前例所示:
Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");
保存报表:
drop.SaveReport(report, null);
3. 对于GoogleDrive:
FastReport.Cloud.StorageClient.SkyDrive.ClientInfo clientInfo = new FastReport.Cloud.StorageClient.SkyDrive.ClientInfo("ClientName", "ClientId", "ClientSecret"); GoogleDriveStorageClient client = new GoogleDriveStorageClient(clientInfo);
代理设置,如有必要的话:
client.ProxySettings.Server = ""; client.ProxySettings.Port = 999; client.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; client.ProxySettings.Username = "Username"; client.ProxySettings.Password = "Password";
创建一个报表:
Report report = new Report(); report.Load(@"C:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");
创建导出:
FastReport.Export.Pdf.PDFExport pdf = new FastReport.Export.Pdf.PDFExport();
保存报表:
client.SaveReport(report, pdf);
4. 对于OneDrive:
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);
代理设置,如有必要的话:
one.ProxySettings.Server = ""; one.ProxySettings.Port = 999; one.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; one.ProxySettings.Username = "Username"; one.ProxySettings.Password = "Password";
创建一个报表:
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客户端:
FastReport.Cloud.StorageClient.FastCloud.FastCloudStorageClient fast = new FastReport.Cloud.StorageClient.FastCloud.FastCloudStorageClient();
分配一个令牌。要生成令牌,请使用 GetAccessToken
方法:
fast.AccessToken = fast.GetAccessToken("email@mail.com", "password");
创建一个导出的实例:
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客户端:
FastReport.Messaging.Xmpp.XmppMessenger messenger = new FastReport.Messaging.Xmpp.XmppMessenger("user@xmpp.jp", "password", "user@xmpp.jp");
如果你需要配置代理服务器:
messenger.ProxySettings.Server = "server"; messenger.ProxySettings.Port = 999; messenger.ProxySettings.ProxyType = FastReport.Cloud.ProxyType.Http; messenger.ProxySettings.Username = "username"; messenger.ProxySettings.Password = "password";
然后(或者在之前)创建一个报表对象:
Report report = new Report(); report.Load(@"С:\Program Files (x86)\FastReports\FastReport.Net\Demos\Reports\Text.frx");
我们把它传递给xmpp客户端:
messenger.SendReport(report, null);
完成此代码后,我们向FastCloud云服务发送报表。与此同时,jabber用户收到一条带有报表链接的信息。xmpp客户端中的链接如下所示:
推荐阅读
- FastReport VCL报表控件开发者手册
- FastReport Online Designer中文手册
- Fastreport.Net教程2016
- Fastreport.Net用户手册
- FastReport.Net教程2017(持续更新中···)
- FastReport Online Designer教程2017(持续更新中···)
- 报表教程2017(持续更新中···)
- FastReport.Net v2018.1版本更新已经发布!