So geht’s: Berichte automatisch in Cloud-Speicherdienste exportieren

Mit List & Label lassen sich Berichte in unterschiedlichste Formate exportieren wie bspw. PDF, Word, Excel und viele mehr. Die entstandenen Berichte können so entweder direkt im Dateisystem gespeichert werden oder – in .NET – in einen Stream, um sie im Anschluss manuell selbst in eine Datenbank, in ein Dokumenten Management System oder ähnliches zu transferieren. Nun können Berichte aber auch direkt automatisiert in sogenannte Cloud-Speicherdienste gespeichert werden. Hierfür stehen in List & Label für .NET die Cloud Storage Provider für GoogleDrive, Microsoft OneDrive oder Dropbox zur Verfügung.

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.

Empfohlene Artikel

Schreibe einen Kommentar