logo
small logo
  • Produkte
  • Shop
  • Support
  • Articles
  • Customer panel Support
    • en
    • pt
    • es
    • de
    • pl
    • JP
    • ZH
  • Home
  • /
  • Articles
  • /
  • Wie man einen Tabellenbericht aus dem Native-Code programmgesteuert erstellt
  • How to create business cards from a WinForms application

    28. Mai 2020

    As you can see from the name, Windows Forms type of applications is designed to

    read more
  • How to create a sales receipt from a WinForms application

    30. Mai 2020

    Most likely every .NET developer started from Windows Forms applications. Countless number of such applications

    read more
  • Wollten Sie Tabellen für den Benutzer generieren - Excel oder OpenOffice Calc?

    8. Oktober 2020

    Tabellen. Seit Jahrhunderten werden sie verwendet, um dieselbe Art von Daten für Buchhaltungszwecke, Zählbeträge und

    read more
  • Wahl der Top-Werte in einer Matrix

    22. April 2021

    Der Artikel ist aktuell bis Version 2022.1. FastReport.NET verfügt über ein großartiges Tool für die Anzeige

    read more
  • Wie schützen Sie Ihr PDF?

    30. November 2020

    Am Vorabend des Datenschutztages haben wir beschlossen, ein Material zum Schutz von PDF-Dokumenten vorzubereiten. PDF-Dokumente

    read more

Wie man einen Tabellenbericht aus dem Native-Code programmgesteuert erstellt

8. Februar 2022

Erinnern wir uns an eine ziemlich häufige Situation, in der Sie etwas sehr schnell und buchstäblich „auf den Knien“ tun müssen. Wir dürfen jedoch nicht vergessen, dass die Struktur und der Inhalt eines Berichts von externen Faktoren abhängen. Der FastReport.NET-Berichtsgenerator ist ein sehr flexibles Produkt und bietet Ihnen zwei Möglichkeiten, dieses Problem zu lösen.

Methode 1. Erstellen einer Berichtsstruktur im Code der Benutzeranwendung.
Methode 2. Interne Steuerung des Berichtsverhaltens mithilfe eines Skripts.

Es gibt ziemlich viele Informationen darüber, wie man bestimmte Verhaltensmerkmale in ein Berichtsskript implementiert. Es gibt jedoch nur wenige Beispiele dafür, wie man einen Bericht aus dem Code erstellen kann. In diesem Artikel werden wir also einen Bericht mit einer Tabelle aus dem Anwendungscode erstellen und beleuchten, wie man die Tabelle mit Daten füllt und ein Objekt in einer Tabellenzelle platziert. Die Methode 2 wird in einem anderen Artikel ausführlicher behandelt.

Das Objekt Tabelle (Table) kann mit statischen oder dynamischen Daten gefüllt werden. Im ersten Fall kennen wir die spezifischen Abmessungen der Tabelle und tragen die Daten sofort aus einem festen Satz in die Zellen ein.

Im zweiten Fall wird die Tabelle dynamisch aufgebaut, Zeilen (Spalten) werden je nach den Daten in der Quelle hinzugefügt. Sie können jedoch auch die Größe der Tabelle begrenzen und fixieren.

Lassen Sie uns eine WinForms-Anwendung erstellen. Aktivieren Sie in den Links die FastReport.dll-Bibliothek, die Sie im Ordner mit dem installierten Berichtsgenerator finden. Fügen Sie dem Formular eine Schaltfläche hinzu, über die der Bericht erstellt wird. Und vergessen Sie nicht, einen Click-Handler dafür zu erstellen.

Aktivieren Sie zunächst die FastReport-Bibliotheken.

using FastReport;
using FastReport.Data;
using FastReport.Table;
using FastReport.Utils;
 
private void button1_Click(object sender, EventArgs e)
{
using (Report report = new Report()) 
//Erstellen eines Berichtsobjekts
 {
 ReportPage page = new ReportPage(); 
//Erstellen eines Berichtsseitenobjekts
 page.Name = "Page1"; 
//Festlegen des Seitennamens
 report.Pages.Add(page); 
//Hinzufügen einer Seite zur Berichtsseitensammlung
 DataSet ds = new DataSet(); 
//Erstellen einer Datenquelle
 ds.ReadXml("~/../../../App_Data/nwind.xml"); 
//Laden der xml-Datenbank hinein
 report.RegisterData(ds); 
//Registrieren der Datenquelle im Bericht
 report.GetDataSource("Products").Enabled = true; 
//Einschalten der Datenquelle
 DataBand dataBand = new DataBand(); 
//Erstellen eines Datenbandes
 dataBand.Name = "DataBand"; 
//Festlegen des Band-Namens
 page.Bands.Add(dataBand); 
//Hinzufügen eines Bands zur Bandsammlung der Seite
 
 TableObject table = new TableObject(); 
//Erstellen des Tabellenobjekts
 table.Name = "Table1"; 
//Festlegen des Objektnamens 
 table.RowCount = 10; 
// Festlegen der Zeilenanzahl 
 table.ColumnCount = 2; 
//Festlegen der Spaltenanzahl
 
//Füllen aller Zellen im Zyklus mit einigen Daten
 for (int i = 0; i < 10; i++)
 for (int j = 0; j < 2; j++)
 {
 table[j, i].Text = (10 * i + j + 1).ToString();
 table[j, i].Border.Lines = BorderLines.All;
 }
 
 dataBand.Objects.Add(table);
 //dataBand.Objects.Add(picture);
 if (report.Prepare())
 report.ShowPrepared();
 }

 

Mit beliebigen Daten gefüllte Tabelle

Betrachten wir nun den Fall, dass die Tabelle mit Daten aus einer Quelle gefüllt werden muss. Ersetzen Sie den obigen Zyklus durch anderen Code:

table.Columns[0].AutoSize = true;
 //table.Columns[1].AutoSize = true;
 
 DataSourceBase data = report.GetDataSource("Products");
 data.Init(); 
//Initialisieren der Datenquelle
 data.First(); 
//Der erste resultierende Datensatz
 
 for (int i = 0; i < 10; i++)
 {
 table[0, i].Text = data["ProductName"].ToString();
 table[0, i].Border.Lines = BorderLines.All; 
//Festlegen der Rahmen
 table[1, i].Text = data["UnitPrice"].ToString();
 table[1, i].Border.Lines = BorderLines.All;
 data.Next();
 }

Als Ergebnis erhalten wir eine Tabelle mit Daten aus der Datenbank:

Mit Daten aus der Datenbank gefüllte Tabelle

Ohne Kopfzeile sieht die Tabelle unvollständig aus. Fügen wir sie hinzu:

table.RowCount = 11;
…
 table[0, 0].Text ="Product Name";
 table[0, 0].Border.Lines = BorderLines.All;
 table[1, 0].Text = "Unit Price";
 table[1, 0].Border.Lines = BorderLines.All;
 
 for (int i = 1; i < 10; i++)
 {
 table[0, i].Text = data["ProductName"].ToString();
 table[0, i].Border.Lines = BorderLines.All;
 
 table[1, i].Text = data["UnitPrice"].ToString();
 table[1, i].Border.Lines = BorderLines.All;
 
 data.Next();
 }

Zur Verdeutlichung: In der ersten Zeile der Tabelle haben wir die Kopfzeilen festgelegt, so dass der Zyklus nicht mit dem ersten, sondern mit dem zweiten Element beginnt.

Tabelle mit Kopfzeilen

Betrachten wir den letzten Fall für heute und zwar, wie man ein Objekt, zum Beispiel ein Bild in eine Tabellenzelle einfügt:

PictureObject picture = new PictureObject();
 //Erstellen des Bildobjekts
 picture.Bounds = new RectangleF(40, 0, Units.Centimeters * 0.5f, Units.Centimeters * 0.5f); 
//Festlegen der Objektgröße
 picture.CreateUniqueName(); 
//Festlegen eines beliebigen Namens
 picture.Image = Image.FromFile("C:/Users/FR/Downloads/28.png"); 
//Festlegen des Pfads zum Bild
 picture.LoadImage(); 
//Hochladen eines Bildes
 picture.Parent = table[1, 1]; 
//Festlegen des übergeordneten Objekts für das Bild

Es ist die Eigenschaft Parent, die sich auf die Anzeige des Bildes in der Zelle auswirkt. Werfen wir einen Blick darauf, wie es aussehen wird:

Tabelle mit einem Bild in der Zelle

Wir haben also beleuchtet, wie man eine Tabelle in einem Bericht aus dem Anwendungscode erstellt und welche zwei Möglichkeiten es gibt, sie mit statischen und dynamischen Daten zu füllen. Außerdem kennen Sie jetzt die Möglichkeiten, ein Objekt programmgesteuert zu einer Tabellenzelle hinzuzufügen.

about product download buy
avatar
Dmitriy Fedyashov
Technical Writer
Fast Reports Team: Dmitriy Fedyashov - Technical Writer at Fast Reports
.NET FastReport WinForms

Add comment
logo
  • 800-985-8986 (English, US)
  • +4930568373928 (German)
  • +55 19 98147-8148 (Portuguese)
  • info@fast-report.com
  • 901 N Pitt Str #325 Alexandria VA 22314
  • Shop
  • Download
  • Dokumentation
  • Referenzen
  • Informationen zur Deinstallation unserer Produkte
  • Ticket system
  • FAQ
  • Tutorial Video
  • Forum
  • Articles
  • Unsere Nachrichten
  • Presse über uns
  • Partner
  • Kontakte

© 1998-2022 by Fast Reports Inc.

  • Datenschutz