Kostenloses Reporting mit SharpReport in ASP.NET-Webseiten

Written on January 07, 2007

Peter Forstmeier hat gestern Build 48 von SharpReport fertiggestellt, welcher vor allem Performanceverbesserungen bei der PDF-Generierung beinhaltet.

SharpReport ist eine open source .NET-Reporting-Komponente, die zunächst als Bestandteil von #develop entwickelt wurde, jedoch inzwischen auch standalone verfügbar ist.

Um nun einen einfachen Report als PDF in einer ASP.NET-Seite darzustellen, sind folgende Schritte nötig:

Zunächst wird die SharpDevelop.SharpReport.exe im bin-Verzeichnis gestartet und ein Report erzeugt:

Durch Rechtsklick auf Database Connections erscheint das Kontext-Menü, in dem Add Connection ausgewählt wird:

Danach erfolgt die Auswahl des Datenbank-Providers:

Im Anschluß daran wird die Datenbankverbindung definiert:

Danach wird das SQL-Kommando ausgewählt bzw. eingegeben:

Nach dem Klick auf "Next" werden die Daten, die das Kommando zurückliefert, angezeigt:

Und nach dem Klick auf "Finish" wird der Report erzeugt:

Der Report ist dann in dem Verzeichnis der Website abzuspeichern.

Um nun den Report mit aktuellen Daten als PDF in der Seite anzeigen zu lassen, ist zunächst eine Referenz in dem Web-Projekt notwendig:

  • SharpDevelop.SharpReport.exe (aus dem bin-Verzeichnis)
  • SharpReportCore.dll (in bin\AddIns\SharpReport)

Weiter sind drei using-Direktiven in der .aspx.cs zu definieren:

using SharpReportCore;
using SharpReportCore.Exporter;
using SharpReportCore.Exporter.ExportRenderer;

Die notwendige Page_Load-Methode sieht dann wie folgt aus:

protected void Page_Load(object sender, EventArgs e) {
    SharpReportEngine engine = new SharpReportEngine();
    string reportPath = Server.MapPath("SharpReport1.srd");
    PageBuilder pageBuilder = engine.CreatePageBuilderSyncron(reportPath);
    pageBuilder.BuildExportList();
    PdfRenderer pdfRenderer =         ExporterFactory.Create(GlobalEnums.OutputPresentationType.PDF) as PdfRenderer;
    pdfRenderer.Pages = pageBuilder.Pages;
    string outputPath = Server.MapPath("SharpReport1.Pdf");
    pdfRenderer.FileName = outputPath;
    pdfRenderer.ShowOutput = false;
    pdfRenderer.Start();
    pdfRenderer.Procces();
    pdfRenderer.End();
    Response.ContentType = "Application/pdf";
    Response.WriteFile(outputPath);
    Response.End();
}

Das Resultat ist ein Report im PDF-Format im Browser:

tags: SharpDevelop Reports ASP.NET