Оглавление
Установлено через NuGet
PM> Install-Package Spire.PDF
Ссылки по теме
Таблица обеспечивает быстрый и эффективный доступ к данным, отображаемым в строках и столбцах в визуально привлекательной форме. Представленные в виде таблицы данные оказывают большее влияние, чем просто слова, и позволяют читателям легко сравнивать и понимать отношения между ними. В этой статье вы узнаете, как создать таблицу в формате PDF на C# и VB.NET используя Spire.PDF for .NET.
Spire.PDF for .NET предлагает класс PdfTable и PdfGrid для работы с таблицами в документе PDF. Класс PdfTable используется для быстрого создания простых обычных таблиц без лишнего форматирования, а класс PdfGrid используется для создания более сложных таблиц.
В таблице ниже перечислены различия между этими двумя классами.
| PdfТаблица | PdfGrid | |
| Форматирование | ||
| Ряд | Можно установить через события. Нет поддержки API. | Можно настроить через API. |
| Столбец | Можно установить через API (StringFormat). | Можно установить через API (StringFormat). |
| Клетка | Можно установить через события. Нет поддержки API. | Можно настроить через API. |
| Другие | ||
| Диапазон столбцов | Не поддерживается. | Можно настроить через API. |
| Диапазон строк | Можно установить через события. Нет поддержки API. | Можно настроить через API. |
| Вложенная таблица | Можно установить через события. Нет поддержки API. | Можно настроить через API. |
| События | Бегинцелллайаут, Эндцелллайаут, БегинРовлайаут, ЭндРовлайаут, Бегинпажемакет, ендпажемакаут. | Бегинпажемакет, ендпажемакаут. |
В следующих разделах показано, как создать таблицу в PDF с помощью классов PdfTable и PdfGrid соответственно.
Установите Spire.PDF for .NET
Для начала вам нужно добавить файлы DLL, включенные в пакет Spire.PDF for .NET, в качестве ссылок в ваш проект .NET. Файлы DLL можно загрузить по этой ссылке или установить через NuGet.
PM> Install-Package Spire.PDF
Создайте таблицу с помощью класса PdfTable
Ниже приведены шаги для создания таблицы с использованием класса PdfTable.
- Создайте объект PdfDocument.
- Добавьте к нему страницу с помощью метода PdfDocument.Pages.Add().
- Создайте объект Pdftable.
- Задайте стиль таблицы через свойство PdfTable.Style.
- Вставить данные в таблицу через свойство PdfTable.DataSource.
- Установите высоту строки и цвет строки через событие BeginRowLayout.
- Нарисуйте таблицу на странице PDF с помощью метода PdfTable.Draw().
- Сохраните документ в файл PDF с помощью метода 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;
}
}
}
}

Создайте таблицу с помощью класса PdfGrid
Ниже приведены шаги по созданию таблицы с использованием класса PdfGrid.
- Создайте объект PdfDocument.
- Добавьте к нему страницу с помощью метода PdfDocument.Pages.Add().
- Создайте объект PdfGrid.
- Задайте стиль таблицы через свойство PdfGrid.Style.
- Добавьте строки в таблицу с помощью метода PdfGrid.Rows.Add().
- Вставка данных в определенные ячейки через свойство PdfGridRow.Cells[index].Value.
- Распределяйте ячейки по столбцам или строкам с помощью свойства PdfGridRow.RowSpan или PdfGridRow.ColumnSpan.
- Задайте форматирование конкретной ячейки с помощью свойств PdfGridRow.Cells[index].StringFormat и PdfGridRow.Cells[index].Style.
- Нарисуйте таблицу на странице PDF с помощью метода PdfGrid.Draw().
- Сохраните документ в файл PDF с помощью метода 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");
}
}
}

Подать заявку на временную лицензию
Если вы хотите удалить оценочное сообщение из сгенерированных документов или избавиться от функциональных ограничений, пожалуйста запросить 30-дневную пробную лицензию для себя.