Erstellen von Tabellen in PDF-Dokumenten (.NET) (C#)
Tags: csharp, dotnet, pdf, compress
Published: 2023-07-31 09:45:57

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](https://www.e-iceblue.com/Introduce/free-pdf-component.html) **Tabellen in PDF-Dokumenten erstellt**.

- **[Erstellen von Tabellen in PDF-Dokumenten mit der PdfTable-Klasse](#erstellen-von-tabellen-in-pdfdokumenten-mit-der-pdftableklasse)**
- **[Erstellen von Tabellen in PDF-Dokumenten mit der PdfGrid-Klasse](#erstellen-von-tabellen-in-pdfdokumenten-mit-der-pdfgridklasse)**

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](https://www.e-iceblue.com/Download/download-pdf-for-net-free.html) 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:**
```cs
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;
            }
        }
    }
}
```


![Erstellen von Tabellen in PDF-Dokumenten](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9inpd68w84edx11etc35.png)

## 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:**
```cs
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();
        }
    }
}
```


![Erstellen von Tabellen in PDF-Dokumenten](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/affe3l7ewkr9mx1feb05.png)

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:

- [Komprimieren von PDF-Dokumenten](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Document-Operation/How-to-Compress-PDF-Document-in-C-VB.NET.html)
- [Extrahieren von Bildern aus PDF-Dateien](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/How-to-Extract-Image-From-PDF-in-C.html)
- [Einfügen von Wasserzeichen in PDF-Dokumente](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/PDF-Watermark-Add-Watermark-in-PDF-with-C-VB.NET.html)
- [Hinzufügen und Entfernen von Anhängen in PDF-Dokumenten](https://www.e-iceblue.com/Tutorials/Spire.PDF/Spire.PDF-Program-Guide/Add-PDF-Attachments-on-.NET.html)