C#/VB.NET : créer des tableaux au format PDF

2023-08-24 08:13:11

Un tableau fournit un accès rapide et efficace aux données affichées dans les lignes et les colonnes d'une manière visuellement attrayante. Lorsqu'elles sont présentées dans un tableau, les données ont un impact plus important que lorsqu'elles sont simplement utilisées sous forme de mots et permettent aux lecteurs de comparer et de comprendre facilement les relations entre elles. Dans cet article, vous apprendrez à créer un tableau au format PDF en C# et VB.NET à l'aide de Spire.PDF for .NET.

Spire.PDF for .NET propose les classes PdfTable et PdfGrid pour travailler avec les tableaux d'un document PDF. La classe PdfTable est utilisée pour créer rapidement des tableaux simples et réguliers sans trop de formatage, tandis que la classe PdfGrid est utilisée pour créer des tableaux plus complexes.

Le tableau ci-dessous liste les différences entre ces deux classes.

PdfTable PdfGrid
Mise en page
Rangée Peut être défini par des événements. Aucune prise en charge d'API. Peut être défini via l'API.
Colonne Peut être défini via l'API (StringFormat). Peut être défini via l'API (StringFormat).
Cellule Peut être défini par des événements. Aucune prise en charge d'API. Peut être défini via l'API.
Autres
Portée de la colonne Pas de support. Peut être défini via l'API.
Étendue de la ligne Peut être défini par des événements. Aucune prise en charge d'API. Peut être défini via l'API.
Tableau imbriqué Peut être défini par des événements. Aucune prise en charge d'API. Peut être défini via l'API.
Événements BeginCellLayout, EndCellLayout, BeginRowLayout, EndRowLayout, BeginPageLayout, EndPageLayout. BeginPageLayout, EndPageLayout.

Les sections suivantes montrent comment créer un tableau au format PDF à l'aide de la classe PdfTable et de la classe PdfGrid, respectivement.

Installer Spire.PDF for .NET

Pour commencer, vous devez ajouter les fichiers DLL inclus dans le package Spire.PDF for .NET en tant que références dans votre projet .NET. Les fichiers DLL peuvent être téléchargés à partir de ce lien ou installés via NuGet.

PM> Install-Package Spire.PDF

Créer un tableau à l'aide de la classe PdfTable

Voici les étapes pour créer un tableau à l'aide de la classe PdfTable.

  • Créez un objet PdfDocument.
  • Ajoutez-y une page en utilisant la méthode PdfDocument.Pages.Add().
  • Créez un objet Pdftable.
  • Définissez le style de tableau via la propriété PdfTable.Style.
  • Insérez des données dans la table via la propriété PdfTable.DataSource.
  • Définissez la hauteur et la couleur des lignes via l'événement BeginRowLayout.
  • Dessinez un tableau sur la page PDF à l'aide de la méthode PdfTable.Draw().
  • Enregistrez le document dans un fichier PDF à l'aide de la méthode PdfDocument.SaveToFile().
  • 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

Créer une table à l'aide de la classe PdfGrid

Vous trouverez ci-dessous les étapes pour créer une table à l'aide de la classe PdfGrid.

  • Créez un objet PdfDocument.
  • Ajoutez-y une page en utilisant la méthode PdfDocument.Pages.Add().
  • Créez un objet PdfGrid.
  • Définissez le style de tableau via la propriété PdfGrid.Style.
  • Ajoutez des lignes au tableau à l'aide de la méthode PdfGrid.Rows.Add().
  • Insérez des données dans des cellules spécifiques via la propriété .
  • Étendez les cellules sur des colonnes ou des lignes via la propriété PdfGridRow.RowSpan ou PdfGridRow.ColumnSpan.
  • Définissez la mise en forme d'une cellule spécifique via les propriétés PdfGridRow.Cells[index].StringFormat et PdfGridRow.Cells[index].Style.
  • Dessinez un tableau sur la page PDF à l'aide de la méthode PdfGrid.Draw().
  • Enregistrez le document dans un fichier PDF à l'aide de la méthode PdfDocument.SaveToFile().
  • 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

Demander une licence temporaire

Si vous souhaitez supprimer le message d'évaluation des documents générés ou vous débarrasser des limitations de la fonction, veuillez demander une licence d'essai de 30 jours pour toi.

Voir également