DEV Community

SirOnly
SirOnly

Posted on

Erstellen von Tabellen in PDF-Dokumenten (.NET) (C#)

Tabellen können Daten visuell effektiver als reiner Text präsentieren. Durch das Einfügen von Tabellen in PDF-Dokumente können Leser Beziehungen zwischen Daten leichter erfassen und dadurch das Dokument besser verstehen. Zudem sind Tabellen auch optisch ansprechend. Durch das Formatieren von Tabellen können Sie einen tiefen Eindruck bei den Lesern hinterlassen.
Dieser Artikel zeigt, wie man mit Free Spire.PDF for .NET Tabellen in PDF-Dokumenten erstellt.

Wir können die PdfTable-Klasse und die PdfGrid-Klasse verwenden, um mit Tabellen in PDF-Dokumenten zu arbeiten. Die PdfTable-Klasse wird verwendet, um schnell einfache, reguläre Tabellen ohne allzu viel Formatierung zu erstellen, während die PdfGrid-Klasse verwendet wird, um komplexere Tabellen zu erstellen.

Hinzufügen von Abhängigkeiten

Sie können die Abhängigkeit manuell von der offiziellen Website herunterladen, im NuGet Package Manager suchen oder sie mit dem Package Manager Console hinzufügen mit:
PM> Install-Package FreeSpire.PDF

Erstellen von Tabellen in PDF-Dokumenten mit der PdfTable-Klasse

Die detaillierten Schritte zur Erstellung einer einfachen formatierten Tabelle mit der Klasse PdfTable sind wie folgt:

  1. Erstellen Sie ein PdfDocument-Objekt.
  2. Fügen Sie mit der Methode PdfDocument.Pages.Add() eine Seite zu dem Dokument hinzu.
  3. Erstellen Sie ein Objekt der Klasse PdfTable.
  4. Gestalten Sie die Tabelle mit der PdfTable-Klasse.
  5. Einfügen von Daten in die Tabelle durch die Klasse PdfTable.
  6. Setzen Sie die Zeilenhöhe und die Farbe der Tabelle über das Ereignis PdfTable.BeginRowLayout.
  7. Zeichnen Sie die Tabelle auf der Seite mit der Methode PdfTable.Draw().
  8. Speichern Sie das Dokument mit der Methode PdfDocument.SaveToFile().

Code-Beispiel:

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Tables;
using System;
using System.Data;
using System.Drawing;

namespace CreatePDFTable
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Erstelle ein Objekt der Klasse PdfDocument
            PdfDocument doc = new PdfDocument();

            // Füge dem Dokument eine Seite hinzu
            PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));

            // Erstelle ein Objekt der Klasse PdfTable
            PdfTable table = new PdfTable();

            // Setze die Schriftart für Header und Zellen
            table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", 12f, FontStyle.Regular), true);
            table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC Medium", 12f, FontStyle.Bold), true);

            // Erstelle ein Objekt der Klasse DataTable
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("Nummer");
            dataTable.Columns.Add("Name");
            dataTable.Columns.Add("Abteilung");
            dataTable.Columns.Add("Position");
            dataTable.Columns.Add("Level");
            dataTable.Rows.Add(new string[] { "1", "David", "Entwicklungsabteilung", "Abteilungsleiter", "1" });
            dataTable.Rows.Add(new string[] { "3", "Tsuzuki Hashi Tomoaki", "Personalabteilung", "Abteilungsleiter", "1" });
            dataTable.Rows.Add(new string[] { "4", "Onoshita Sachiko", "Vertriebsabteilung", "Abteilungsleiter", "1" });
            dataTable.Rows.Add(new string[] { "7", "Murata Yui", "Vertriebsabteilung", "Mitarbeiter", "2" });
            dataTable.Rows.Add(new string[] { "9", "Inui Yuma", "Personalabteilung", "Mitarbeiter", "2" });
            dataTable.Rows.Add(new string[] { "11", "Imai Hikomasa", "Entwicklungsabteilung", "Mitarbeiter", "2" });

            // Setze die Datenquelle für die Tabelle
            table.DataSource = dataTable;

            // Zeige die Tabelle Header an (standardmäßig nicht angezeigt)
            table.Style.ShowHeader = true;

            // Setze die Hintergrundfarbe und die Textfarbe für den Tabellenheader
            table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.Gray;
            table.Style.HeaderStyle.TextBrush = PdfBrushes.White;

            // Setze die Textausrichtung für den Tabellenheader
            table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);

            // Setze die Textausrichtung für andere Zellen
            for (int i = 0; i < table.Columns.Count; i++)
            {
                table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
            }

            // Melde ein Ereignis an
            table.BeginRowLayout += Table_BeginRowLayout;

            // Zeichne die Tabelle auf der Seite
            table.Draw(page, new PointF(0, 30));

            // Speichere das PDF-Dokument
            doc.SaveToFile("PdfTable.pdf");
            doc.Dispose();
        }

        // Ereignishandler
        private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
        {
            // Setze die minimale Höhe der Zeile
            args.MinimalHeight = 20f;

            // Ersetze die Hintergrundfarbe der Zeile
            if (args.RowIndex < 0)
            {
                return;
            }
            if (args.RowIndex % 2 == 1)
            {
                args.CellStyle.BackgroundBrush = PdfBrushes.LightGray;
            }
            else
            {
                args.CellStyle.BackgroundBrush = PdfBrushes.White;
            }
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Erstellen von Tabellen in PDF-Dokumenten

Erstellen von Tabellen in PDF-Dokumenten mit der PdfGrid-Klasse

Die PdfGrid-Klasse verfügt über weitere Funktionen zur Erstellung komplexer formatierter Tabellen. Die detaillierten Schritte zur Erstellung einer Tabelle mit der PdfGrid-Klasse sind wie folgt:

  1. Erstellen Sie ein PdfDocument-Objekt.
  2. Fügen Sie dem Dokument mit der Methode PdfDocument.Pages.Add() eine Seite hinzu.
  3. Erstellen Sie ein Objekt der Klasse PdfGrid.
  4. Legen Sie den Tabellenstil mit der Eigenschaft PdfGrid.Style fest.
  5. Fügen Sie mit der Methode PdfGrid.Rows.Add() Zeilen zur Tabelle hinzu.
  6. Einfügen von Daten in die angegebenen Zellen mithilfe der Eigenschaft PdfGridRow.Cells[index].Value.
  7. Vertikales oder horizontales Zusammenführen von Zellen mithilfe der Eigenschaften PdfGridRow.RowSpan oder PdfGridRow.ColumnSpan.
  8. Formatieren Sie die angegebenen Zellen mithilfe der Eigenschaften PdfGridRow.Cells[index].StringFormat und PdfGridRow.Cells[index].Style.
  9. Zeichnen Sie die Tabelle auf der Seite mit der Methode PdfGrid.Draw().
  10. Speichern Sie das Dokument mit der Methode PdfDocument.SaveToFile().

Code-Beispiel:

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Grid;
using System;
using System.Drawing;

namespace CreatePDFGrid
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Erstelle ein Objekt der Klasse PdfDocument
            PdfDocument doc = new PdfDocument();

            // Füge dem Dokument eine Seite hinzu
            PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));

            // Erstelle ein Objekt der Klasse PdfGrid
            PdfGrid grid = new PdfGrid();

            // Setze das Zell-Padding
            grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);

            // Setze die Schriftart
            grid.Style.Font = new PdfTrueTypeFont(new Font("HarmonyOS Sans SC", 13f, FontStyle.Regular), true);

            // Füge Zeilen hinzu
            PdfGridRow row1 = grid.Rows.Add();
            PdfGridRow row2 = grid.Rows.Add();
            PdfGridRow row3 = grid.Rows.Add();
            PdfGridRow row4 = grid.Rows.Add();
            grid.Columns.Add(4);

            // Setze die Spaltenbreiten
            foreach (PdfGridColumn col in grid.Columns)
            {
                col.Width = 110f;
            }

            // Fülle Daten in spezifische Zellen ein
            row1.Cells[0].Value = "Bestell- und Zahlungsstatus";
            row2.Cells[0].Value = "Bestellnummer";
            row2.Cells[1].Value = "Datum";
            row2.Cells[2].Value = "Kundenname";
            row2.Cells[3].Value = "Zahlungsstatus";
            row3.Cells[0].Value = "00223";
            row3.Cells[1].Value = "2. Juni 2022";
            row3.Cells[2].Value = "ZO Property";
            row3.Cells[3].Value = "Bezahlt";
            row4.Cells[0].Value = "00224";
            row4.Cells[1].Value = "3. Juni 2022";
            row4.Cells[3].Value = "Unbezahlt";

            // Zusammenführen von Zellen über Spalten
            row1.Cells[0].ColumnSpan = 4;

            // Zusammenführen von Zellen über Zeilen
            row3.Cells[2].RowSpan = 2;

            // Setzen der Textausrichtung für spezifische Zellen
            row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);

            // Setzen der Hintergrundfarbe für spezifische Zellen
            row1.Cells[0].Style.BackgroundBrush = PdfBrushes.Orange;
            row4.Cells[3].Style.BackgroundBrush = PdfBrushes.LightGray;

            // Setzen des Rahmenformats
            PdfBorders borders = new PdfBorders();
            borders.All = new PdfPen(Color.Orange, 0.8f);
            foreach (PdfGridRow pgr in grid.Rows)
            {
                foreach (PdfGridCell pgc in pgr.Cells)
                {
                    pgc.Style.Borders = borders;
                }
            }

            // Zeichne die Tabelle auf der Seite
            grid.Draw(page, new PointF(0, 30));

            // Speichere das PDF-Dokument
            doc.SaveToFile("PdfGrid.pdf");
            doc.Dispose();
        }
    }
}
Enter fullscreen mode Exit fullscreen mode

Erstellen von Tabellen in PDF-Dokumenten

Dieser Artikel erklärt, wie man mit den von Free Spire.PDF for .NET bereitgestellten PdfTable- und PdfGrid-Klassen Tabellen in PDF-Dokumenten erstellt. Entwickler können ihre eigenen Formulare gemäß den Formatierungsanforderungen unter Verwendung dieser beiden Klassen erstellen.

Free Spire.PDF for .NET bietet viele weitere Funktionen, darunter:

Top comments (0)