Damit die List & Label .NET Komponente die exportierten Berichte direkt und automatisiert in einen der unterstützten Cloud-Speicherdienste übertragen kann, ist je nach Zielsystem mindestens eine weitere Assembly-Referenz notwendig. Der Quelltext für die benötigten Assemblies steht auf GitHub zur Verfügung und kann beliebig angepasst oder erweitert werden. Auch im combit Report Server können die Cloud Storage Provider für geplante Berichte verwendet werden. Nachfolgend finden Sie einige Beispiele, die aufzeigen wie die Provider im eigenen Code verwendet werden können.
Hier wird zunächst ein einfacher dateibasierter PDF-Export mit List & Label gezeigt. Der Bericht wird dann anschließend als Stream auf GoogleDrive hochgeladen, inklusive der Anmeldedaten, damit keine gesonderte Authentifizierung durch den Anwender erfolgen muss. Hierzu ist dann jedoch ein eigens zu erzeugender RefreshToken notwendig:
... using (ListLabel LL = new ListLabel()) { // D: Datenquelle und Optionen für List & Label definieren // US: Define data source and options for List & Label // ... // D: Bericht mit List & Label als PDF nach _filePath exportieren // US: Export report with List & Label as PDF document into _filePath ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, _filePath, "simple.lst") { ShowResult = false }; LL.Export(exportConfiguration); // D: Bericht nach GoogleDrive hochladen // US: Upload report into GoogleDrive var stream = new FileStream(_filePath, FileMode.Open, FileAccess.Read); GoogleDriveUploadParameter googleDriveUploadParameter = new GoogleDriveUploadParameter() { MimeType = GetMimeType(_filePathh), UploadStream = stream, CloudFileName = Path.GetFileName(_filePath), CloudPath = "" // empty string means root folder }; GoogleDriveCredentials googleDriveUploadCredentials = new GoogleDriveCredentials() { ApplicationName = "<Application name of your Google App>", ClientId = "<Client Id of your Google App>", ClientSecret = "client_secret.json", RefreshToken = "<Refresh token of your Google App>" }; LL.UploadSilently(googleDriveUploadParameter, googleDriveUploadCredentials); stream.Close(); } ...
Den Upload eines Stream-basierten Berichts nach Microsoft OneDrive, der erst vorher manuell generiert wird, zeigt der folgende Code. Hierbei wird jedoch die Eingabe der Anmeldedaten an Microsoft OneDrive für den Anwender forciert:
... using (ListLabel LL = new ListLabel()) { // D: Datenquelle und Optionen für List & Label definieren // US: Define data source and options for List & Label // ... // D: Bericht mit List & Label als PDF direkt in einen Stream exportieren // US: Export report with List & Label as PDF document into stream var stream = new FileStream(_filePath, FileMode.CreateNew); ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, stream, "simple.lst") { ShowResult = false }; LL.Export(exportConfiguration); // D: Bericht nach Microsoft OneDrive hochladen // US: Upload report into Microsoft OneDrive MicrosoftOneDriveUploadParameter microsoftOneDriveUploadParameter = new MicrosoftOneDriveUploadParameter() { ApplicationId = "<Application Id of your Microsoft App>", UploadStream = stream, CloudFileName = Path.GetFileName(_filePath), CloudPath = "Documents" }; LL.Upload(microsoftOneDriveUploadParameter); } ...
Die obigen Beispiele für GoogleDrive und Microsoft OneDrive zeigen alle einen gesonderten Upload des zuvor exportierten Berichts über die Upload-Funktion des jeweiligen Cloud Storage Providers. Darüber können dann natürlich auch jederzeit beliebige Dateien hochgeladen werden, vollkommen unabhängig von List & Label. Mit Hilfe einer Erweiterungsmethode für die Export-Funktion, die jeder Cloud Storage Provider enthält, kann jedoch auch der Export des Berichtes inklusive des Uploads vollständig in einem Zug durchgeführt werden. Welcher der Cloud Storage Provider dabei verwendet wird, entscheidet der jeweilige spezifische Parameter. So würde dann ein direkter dateibasierter Export inklusive Upload nach Dropbox aussehen:
... using (ListLabel LL = new ListLabel()) { // D: Datenquelle und Optionen für List & Label definieren // US: Define data source and options for List & Label // ... // D: Optionen für den Export des Berichts definieren // US: Define export options for the report ExportConfiguration exportConfiguration = new ExportConfiguration(LlExportTarget.Pdf, _filePath, "simple.lst") { ShowResult = false }; // D: Bericht direkt nach dem Exportieren nach Dropbox hochladen // US: Upload the exported report into Dropbox DropboxExportParameter dropBoxExportParameter = new DropboxExportParameter() { CloudFileName = Path.GetFileNameWithoutExtension(_filePath), CloudPath = "Documents" }; LL.Export(exportConfiguration, dropBoxExportParameter, "<Your DropBox App Key>"); } ...
In den einzelnen Implementierungen der Cloud Storage Provider finden sich noch weitere hilfreiche Funktionen und eine ausführliche Code-Dokumentation. Stöbern Sie ein wenig herum oder implementieren Sie sogar speziell für Ihre Anforderungen eigene neue Funktionen. Natürlich freuen wir uns auch sehr über Pull-Requests auf GitHub, um Aktualisierungen der gesamten List & Label Community zugänglich machen zu können.
Daniel wurde bei combit zum Softwareentwickler ausgebildet und leitet als Manager den Customer Support. Neben der Softwareentwicklung betreut er auch technische Kooperationen mit Geschäftspartnern, hält Workshops für Entwickler und unterstützt das Sales- und Service-Team als Berater im technischen Bereich. In seiner Freizeit findet man ihn auf seinem Mountainbike oder Rennrad rund um den Bodensee und in den nahen Alpen. Er nimmt sich auch Zeit für chinesische Kampfkünste wie Wushu Kungfu und Taichi.