C#/VB.NET: crear tablas en PDF

2023-08-24 08:17:55

Über NuGet installiert

PM> Install-Package Spire.PDF

verwandte Links

Eine Tabelle bietet schnellen und effizienten Zugriff auf optisch ansprechende Daten, die in Zeilen und Spalten angezeigt werden. Wenn Daten in einer Tabelle dargestellt werden, haben sie eine größere Wirkung als wenn sie nur in Worten verwendet werden, und ermöglichen es den Lesern, die Beziehungen zwischen ihnen leicht zu vergleichen und zu verstehen. In diesem Artikel erfahren Sie, wie das geht Erstellen Sie eine Tabelle im PDF-Format in C# und VB.NET mit Spire.PDF for .NET.

Spire.PDF for .NET bietet die Klassen PdfTable und PdfGrid für die Arbeit mit den Tabellen in einem PDF-Dokument. Die PdfTable-Klasse wird zum schnellen Erstellen einfacher, regulärer Tabellen ohne allzu große Formatierung verwendet, während die PdfGrid-Klasse zum Erstellen komplexerer Tabellen verwendet wird.

In der folgenden Tabelle sind die Unterschiede zwischen diesen beiden Klassen aufgeführt.

PdfTable PdfGrid
Formatierung
Reihe Kann über Ereignisse eingestellt werden. Keine API-Unterstützung. Kann über die API eingestellt werden.
Spalte Kann über die API (StringFormat) festgelegt werden. Kann über die API (StringFormat) festgelegt werden.
Zelle Kann über Ereignisse eingestellt werden. Keine API-Unterstützung. Kann über die API eingestellt werden.
Andere
Spaltenspanne Nicht unterstützt. Kann über die API eingestellt werden.
Zeilenspanne Kann über Ereignisse eingestellt werden. Keine API-Unterstützung. Kann über die API eingestellt werden.
Geschachtelter Tisch Kann über Ereignisse eingestellt werden. Keine API-Unterstützung. Kann über die API eingestellt werden.
Veranstaltungen BeginCellLayout, EndCellLayout, BeginRowLayout, EndRowLayout, BeginPageLayout, EndPageLayout. BeginPageLayout, EndPageLayout.

In den folgenden Abschnitten wird gezeigt, wie Sie mit der PdfTable-Klasse bzw. der PdfGrid-Klasse eine Tabelle in PDF erstellen.

Installieren Sie Spire.PDF for .NET

Zunächst müssen Sie die im Spire.PDF for.NET-Paket enthaltenen DLL-Dateien als Referenzen in Ihrem .NET-Projekt hinzufügen. Die DLL-Dateien können entweder über diesen Link heruntergeladen oder über NuGet installiert werden.

PM> Install-Package Spire.PDF

Erstellen Sie eine Tabelle mit der PdfTable-Klasse

Im Folgenden finden Sie die Schritte zum Erstellen einer Tabelle mithilfe der PdfTable-Klasse.

  • Erstellen Sie ein PdfDocument-Objekt.
  • Fügen Sie mit der Methode PdfDocument.Pages.Add() eine Seite hinzu.
  • Erstellen Sie ein Pdftable-Objekt.
  • Legen Sie den Tabellenstil über die Eigenschaft PdfTable.Style fest.
  • Fügen Sie Daten über die Eigenschaft PdfTable.DataSource in die Tabelle ein.
  • Legen Sie die Zeilenhöhe und die Zeilenfarbe über das BeginRowLayout-Ereignis fest.
  • Zeichnen Sie eine Tabelle auf der PDF-Seite mit der Methode PdfTable.Draw().
  • Speichern Sie das Dokument mit der Methode PdfDocument.SaveToFile() in einer PDF-Datei.
  • C#
  • VB.NET
using System;
    using System.Data;
    using System.Drawing;
    using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Tables;
    
    namespace CreateTable
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument();
    
                //Add a page
                PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));
    
                //Create a PdfTable object
                PdfTable table = new PdfTable();
    
                //Set font for header and the rest cells
                table.Style.DefaultStyle.Font = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Regular), true);
                table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Times New Roman", 12f, FontStyle.Bold), true);
    
                //Crate a DataTable
                DataTable dataTable = new DataTable();
                dataTable.Columns.Add("ID");
                dataTable.Columns.Add("Name");
                dataTable.Columns.Add("Department");
                dataTable.Columns.Add("Position");
                dataTable.Columns.Add("Level");
                dataTable.Rows.Add(new string[] { "1", "David", "IT", "Manager", "1" });
                dataTable.Rows.Add(new string[] { "3", "Julia", "HR", "Manager", "1" });
                dataTable.Rows.Add(new string[] { "4", "Sophie", "Marketing", "Manager", "1" });
                dataTable.Rows.Add(new string[] { "7", "Wickey", "Marketing", "Sales Rep", "2" });
                dataTable.Rows.Add(new string[] { "9", "Wayne", "HR", "HR Supervisor", "2" });
                dataTable.Rows.Add(new string[] { "11", "Mia", "Dev", "Developer", "2" });
    
                //Set the datatable as the data source of table
                table.DataSource = dataTable;
    
                //Show header(the header is hidden by default)
                table.Style.ShowHeader = true;
    
                //Set font color and backgroud color of header row
                table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.Gray;
                table.Style.HeaderStyle.TextBrush = PdfBrushes.White;
    
                //Set text alignment in header row
                table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
    
                //Set text alignment in other cells
                for (int i = 0; i < table.Columns.Count; i++)
                {
                    table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
                }
    
                //Register with BeginRowLayout event
                table.BeginRowLayout += Table_BeginRowLayout;
    
                //Draw table on the page
                table.Draw(page, new PointF(0, 30));
    
                //Save the document to a PDF file
                doc.SaveToFile("PdfTable.pdf");
            }
    
            //Event handler
            private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
            {
                //Set row height
                args.MinimalHeight = 20f;
    
                //Alternate row color
                if (args.RowIndex < 0)
                {
                    return;
                }
                if (args.RowIndex % 2 == 1)
                {
                    args.CellStyle.BackgroundBrush = PdfBrushes.LightGray;
                }
                else
                {
                    args.CellStyle.BackgroundBrush = PdfBrushes.White;
                }
            }
        }
    }

C#/VB.NET: Create Tables in PDF

Erstellen Sie eine Tabelle mit der Klasse PdfGrid

Nachfolgend finden Sie die Schritte zum Erstellen einer Tabelle mit der PdfGrid-Klasse.

  • Erstellen Sie ein PdfDocument-Objekt.
  • Fügen Sie mit der Methode PdfDocument.Pages.Add() eine Seite hinzu.
  • Erstellen Sie ein PDFGrid-Objekt.
  • Legen Sie den Tabellenstil über die Eigenschaft PdfGrid.Style fest.
  • Fügen Sie der Tabelle mithilfe der Methode PdfGrid.Rows.Add() Zeilen hinzu.
  • Fügen Sie Daten über die Eigenschaft PdfGridRow.Cells[index].Value in bestimmte Zellen ein.
  • Erweitern Sie Zellen über Spalten oder Zeilen mithilfe der Eigenschaft PdfGridRow.RowSpan oder PdfGridRow.ColumnSpan.
  • Legen Sie die Formatierung einer bestimmten Zelle über die Eigenschaften PdfGridRow.Cells[index].StringFormat und PdfGridRow.Cells[index].Style fest.
  • Zeichnen Sie eine Tabelle auf der PDF-Seite mit der Methode PdfGrid.Draw().
  • Speichern Sie das Dokument mit der Methode PdfDocument.SaveToFile() in einer PDF-Datei.
  • C#
  • VB.NET
using Spire.Pdf;
    using Spire.Pdf.Graphics;
    using Spire.Pdf.Grid;
    using System.Drawing;
    
    namespace CreateGrid
    {
        class Program
        {
            static void Main(string[] args)
            {
                //Create a PdfDocument object
                PdfDocument doc = new PdfDocument();
    
                //Add a page
                PdfPageBase page = doc.Pages.Add(PdfPageSize.A4,new PdfMargins(40));
    
                //Create a PdfGrid
                PdfGrid grid = new PdfGrid();
    
                //Set cell padding
                grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);
    
                //Set font
                grid.Style.Font = new PdfTrueTypeFont(new Font("Times New Roman", 13f, FontStyle.Regular), true);
    
                //Add rows
                PdfGridRow row1 = grid.Rows.Add();
                PdfGridRow row2 = grid.Rows.Add();
                PdfGridRow row3 = grid.Rows.Add();
                PdfGridRow row4 = grid.Rows.Add();
                grid.Columns.Add(4);
    
                //Set column width
                foreach (PdfGridColumn col in grid.Columns)
                {
                    col.Width = 110f;
                }
    
                //Write data into specific cells
                row1.Cells[0].Value = "Order and Payment Status";
                row2.Cells[0].Value = "Order number";
                row2.Cells[1].Value = "Date";
                row2.Cells[2].Value = "Customer";
                row2.Cells[3].Value = "Paid or not";
                row3.Cells[0].Value = "00223";
                row3.Cells[1].Value = "2022/06/02";
                row3.Cells[2].Value = "Brick Lane Realty";
                row3.Cells[3].Value = "Yes";
                row4.Cells[0].Value = "00224";
                row4.Cells[1].Value = "2022/06/03";
                row4.Cells[3].Value = "No";
    
                //Span cell across columns
                row1.Cells[0].ColumnSpan = 4;
    
                //Span cell across rows
                row3.Cells[2].RowSpan = 2;
    
                //Set text alignment of specific cells
                row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
                row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);
    
                //Set background color of specific cells
                row1.Cells[0].Style.BackgroundBrush = PdfBrushes.Orange;
                row4.Cells[3].Style.BackgroundBrush = PdfBrushes.LightGray;
    
                //Format cell border
                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;
                    }
                }
    
                //Draw table on the page
                grid.Draw(page, new PointF(0, 30));
    
                //Save the document to a PDF file
                doc.SaveToFile("PdfGrid.pdf");
            }
        }
    }

C#/VB.NET: Create Tables in PDF

Beantragen Sie eine temporäre Lizenz

Wenn Sie die Bewertungsmeldung aus den generierten Dokumenten entfernen oder die Funktionseinschränkungen beseitigen möchten, wenden Sie sich bitte an uns Fordern Sie eine 30-Tage-Testlizenz an für sich selbst.

Siehe auch