C#/VB.NET: crear tablas en PDF

2023-08-24 08:16:45

Instalado a través de NuGet

PM> Install-Package Spire.PDF

enlaces relacionados

Una tabla brinda acceso rápido y eficiente a los datos que se muestran en filas y columnas de una manera visualmente atractiva. Cuando se presentan en una tabla, los datos tienen un mayor impacto que cuando se usan solo como palabras y permiten a los lectores comparar y comprender fácilmente las relaciones entre ellos. En este artículo, aprenderá cómo cree una tabla en PDF en C# y VB.NET usando Spire.PDF for .NET.

Spire.PDF for .NET ofrece las clases PdfTable y PdfGrid para trabajar con las tablas en un documento PDF. La clase PdfTable se usa para crear rápidamente tablas simples y regulares sin demasiado formato, mientras que la clase PdfGrid se usa para crear tablas más complejas.

La siguiente tabla enumera las diferencias entre estas dos clases.

PdfTable PdfCuadrícula
Formateo
Fila Se puede establecer a través de eventos. Sin soporte de API. Se puede configurar a través de la API.
Columna Se puede configurar a través de API (StringFormat). Se puede configurar a través de API (StringFormat).
Celúla Se puede establecer a través de eventos. Sin soporte de API. Se puede configurar a través de la API.
Otros
Tramo de columna No apoyo. Se puede configurar a través de la API.
Intervalo de filas Se puede establecer a través de eventos. Sin soporte de API. Se puede configurar a través de la API.
tabla anidada Se puede establecer a través de eventos. Sin soporte de API. Se puede configurar a través de la API.
Eventos BeginCellLayout,  EndCellLayout, BeginRowLayout, EndRowLayout, BeginPageLayout, EndPageLayout. BeginPageLayout, EndPageLayout.

Las siguientes secciones muestran cómo crear una tabla en PDF usando la clase PdfTable y la clase PdfGrid, respectivamente.

Instalar Spire.PDF for .NET

Para empezar, debe agregar los archivos DLL incluidos en el paquete Spire.PDF for .NET como referencias en su proyecto .NET. Los archivos DLL se pueden descargar desde este enlace o instalar a través de NuGet.

PM> Install-Package Spire.PDF

Crear una tabla usando la clase PdfTable

Los siguientes son los pasos para crear una tabla usando la clase PdfTable.

  • Cree un objeto PdfDocument.
  • Agregue una página usando el método PdfDocument.Pages.Add().
  • Cree un objeto Pdftable.
  • Establezca el estilo de la tabla a través de la propiedad PdfTable.Style.
  • Inserte datos en la tabla a través de la propiedad PdfTable.DataSource.
  • Establezca la altura de la fila y el color de la fila a través del evento BeginRowLayout.
  • Dibuje una tabla en la página PDF utilizando el método PdfTable.Draw().
  • Guarde el documento en un archivo PDF utilizando el método 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

Crear una tabla usando la clase PdfGrid

A continuación se muestran los pasos para crear una tabla utilizando la clase PdfGrid.

  • Cree un objeto PdfDocument.
  • Agregue una página usando el método PdfDocument.Pages.Add().
  • Cree un objeto PdfGrid.
  • Establezca el estilo de la tabla a través de la propiedad PdfGrid.Style.
  • Agregue filas a la tabla usando el método PdfGrid.Rows.Add().
  • Inserte datos en celdas específicas a través de la propiedad PdfGridRow.Cells[index].Value.
  • Distribuya celdas en columnas o filas a través de la propiedad PdfGridRow.RowSpan o PdfGridRow.ColumnSpan.
  • Establezca el formato de una celda específica a través de las propiedades PdfGridRow.Cells[index].StringFormat y PdfGridRow.Cells[index].Style.
  • Dibuje una tabla en la página PDF utilizando el método PdfGrid.Draw().
  • Guarde el documento en un archivo PDF utilizando el método 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

Solicitar una Licencia Temporal

Si desea eliminar el mensaje de evaluación de los documentos generados o deshacerse de las limitaciones de la función, por favor solicitar una licencia de prueba de 30 días para ti.

Ver también