C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C# PDF创建表格

C#代码实现在PDF文档中创建表格

作者:2501_93070778

表格能够以清晰直观的行列结构展示数据,使信息更易于阅读和理解,本文介绍了如何使用 C# 在 PDF 文档中创建功能丰富的表格,有需要的小伙伴可以了解下

表格能够以清晰直观的行列结构展示数据,使信息更易于阅读和理解。与纯文本相比,表格不仅能够增强数据的可读性,还能帮助读者快速进行比较并发现数据之间的关联关系。本文将介绍如何在 C# 和 VB.NET 中创建 PDF 表格,并分别使用两种不同的表格对象来实现简单表格和复杂表格的生成。

在 PDF 开发中,通常可以使用 PdfTablePdfGrid 两种方式创建表格。其中,PdfTable 适用于快速创建结构简单、格式要求不高的表格;而 PdfGrid 则提供了更丰富的格式设置能力,适合构建复杂的数据表格。

两者的主要区别如下:

功能PdfTablePdfGrid
行格式设置可通过事件实现,无直接 API支持通过 API 设置
列格式设置支持通过 API 设置支持通过 API 设置
单元格格式设置可通过事件实现,无直接 API支持通过 API 设置
列合并(Column Span)不支持支持
行合并(Row Span)可通过事件实现,无直接 API支持
嵌套表格可通过事件实现,无直接 API支持
事件支持BeginCellLayout、EndCellLayout、BeginRowLayout、EndRowLayout、BeginPageLayout、EndPageLayoutBeginPageLayout、EndPageLayout

接下来将分别演示如何使用 PdfTablePdfGrid 创建 PDF 表格,并介绍它们在不同场景下的应用方法。

安装 PDF 开发库

在开始之前,需要先将 PDF 开发库的 DLL 文件添加到 .NET 项目中作为引用。您可以通过下载对应的安装包获取 DLL 文件,也可以直接通过 NuGet 包管理器进行安装。

PM> Install-Package Spire.PDF

完成安装后,即可在项目中调用相关 API 来创建、编辑和处理 PDF 文档。

使用 PdfTable 类创建表格

以下是在 PDF 文档中使用 PdfTable 类创建表格的主要步骤:

  1. 创建 PdfDocument 对象。
  2. 使用 PdfDocument.Pages.Add() 方法向文档中添加一个页面。
  3. 创建 PdfTable 对象。
  4. 通过 PdfTable.Style 属性设置表格样式。
  5. 通过 PdfTable.DataSource 属性向表格填充数据。
  6. BeginRowLayout 事件中设置行高和行颜色。
  7. 使用 PdfTable.Draw() 方法将表格绘制到 PDF 页面中。
  8. 使用 PdfDocument.SaveToFile() 方法将文档保存为 PDF 文件。

完整示例代码如下:

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)
        {
            //创建 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            //添加页面
            PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));

            //创建 PdfTable 对象
            PdfTable table = new PdfTable();

            //设置表头和普通单元格字体
            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);

            //创建 DataTable 数据源
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("ID");
            dataTable.Columns.Add("姓名");
            dataTable.Columns.Add("部门");
            dataTable.Columns.Add("职位");
            dataTable.Columns.Add("级别");

            dataTable.Rows.Add(new string[] { "1", "David", "IT", "经理", "1" });
            dataTable.Rows.Add(new string[] { "3", "Julia", "人力资源", "经理", "1" });
            dataTable.Rows.Add(new string[] { "4", "Sophie", "市场部", "经理", "1" });
            dataTable.Rows.Add(new string[] { "7", "Wickey", "市场部", "销售代表", "2" });
            dataTable.Rows.Add(new string[] { "9", "Wayne", "人力资源", "人事主管", "2" });
            dataTable.Rows.Add(new string[] { "11", "Mia", "开发部", "开发人员", "2" });

            //将 DataTable 设置为表格数据源
            table.DataSource = dataTable;

            //显示表头(默认情况下表头是隐藏的)
            table.Style.ShowHeader = true;

            //设置表头行的字体颜色和背景颜色
            table.Style.HeaderStyle.BackgroundBrush = PdfBrushes.Gray;
            table.Style.HeaderStyle.TextBrush = PdfBrushes.White;

            //设置表头文本对齐方式
            table.Style.HeaderStyle.StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);

            //设置其他单元格文本对齐方式
            for (int i = 0; i < table.Columns.Count; i++)
            {
                table.Columns[i].StringFormat = new PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle);
            }

            //注册 BeginRowLayout 事件
            table.BeginRowLayout += Table_BeginRowLayout;

            //在页面上绘制表格
            table.Draw(page, new PointF(0, 30));

            //保存为 PDF 文件
            doc.SaveToFile("PdfTable.pdf");
        }

        //事件处理方法
        private static void Table_BeginRowLayout(object sender, BeginRowLayoutEventArgs args)
        {
            //设置行高
            args.MinimalHeight = 20f;

            //设置隔行背景色
            if (args.RowIndex < 0)
            {
                return;
            }

            if (args.RowIndex % 2 == 1)
            {
                args.CellStyle.BackgroundBrush = PdfBrushes.LightGray;
            }
            else
            {
                args.CellStyle.BackgroundBrush = PdfBrushes.White;
            }
        }
    }
}

使用 PdfGrid 类创建表格

以下是在 PDF 文档中使用 PdfGrid 类创建表格的主要步骤:

  1. 创建 PdfDocument 对象。
  2. 使用 PdfDocument.Pages.Add() 方法向文档中添加一个页面。
  3. 创建 PdfGrid 对象。
  4. 通过 PdfGrid.Style 属性设置表格样式。
  5. 使用 PdfGrid.Rows.Add() 方法向表格中添加行。
  6. 通过 PdfGridRow.Cells[index].Value 属性向指定单元格填充数据。
  7. 使用 PdfGridRow.RowSpanPdfGridRow.ColumnSpan 属性实现单元格跨行或跨列合并。
  8. 通过 PdfGridRow.Cells[index].StringFormatPdfGridRow.Cells[index].Style 属性设置指定单元格的格式和样式。
  9. 使用 PdfGrid.Draw() 方法将表格绘制到 PDF 页面中。
  10. 使用 PdfDocument.SaveToFile() 方法将文档保存为 PDF 文件。

完整示例代码如下:

using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Grid;
using System.Drawing;

namespace CreateGrid
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建 PdfDocument 对象
            PdfDocument doc = new PdfDocument();

            //添加页面
            PdfPageBase page = doc.Pages.Add(PdfPageSize.A4, new PdfMargins(40));

            //创建 PdfGrid 对象
            PdfGrid grid = new PdfGrid();

            //设置单元格内边距
            grid.Style.CellPadding = new PdfPaddings(1, 1, 1, 1);

            //设置字体
            grid.Style.Font = new PdfTrueTypeFont(new Font("Times New Roman", 13f, FontStyle.Regular), true);

            //添加行
            PdfGridRow row1 = grid.Rows.Add();
            PdfGridRow row2 = grid.Rows.Add();
            PdfGridRow row3 = grid.Rows.Add();
            PdfGridRow row4 = grid.Rows.Add();
            grid.Columns.Add(4);

            //设置列宽
            foreach (PdfGridColumn col in grid.Columns)
            {
                col.Width = 110f;
            }

            //向指定单元格写入数据
            row1.Cells[0].Value = "订单与付款状态";
            row2.Cells[0].Value = "订单编号";
            row2.Cells[1].Value = "日期";
            row2.Cells[2].Value = "客户";
            row2.Cells[3].Value = "是否付款";

            row3.Cells[0].Value = "00223";
            row3.Cells[1].Value = "2022/06/02";
            row3.Cells[2].Value = "Brick Lane Realty";
            row3.Cells[3].Value = "是";

            row4.Cells[0].Value = "00224";
            row4.Cells[1].Value = "2022/06/03";
            row4.Cells[3].Value = "否";

            //跨列合并单元格
            row1.Cells[0].ColumnSpan = 4;

            //跨行合并单元格
            row3.Cells[2].RowSpan = 2;

            //设置指定单元格的文本对齐方式
            row1.Cells[0].StringFormat = new PdfStringFormat(PdfTextAlignment.Center);
            row3.Cells[2].StringFormat = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);

            //设置指定单元格的背景颜色
            row1.Cells[0].Style.BackgroundBrush = PdfBrushes.Orange;
            row4.Cells[3].Style.BackgroundBrush = PdfBrushes.LightGray;

            //设置单元格边框样式
            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;
                }
            }

            //在页面上绘制表格
            grid.Draw(page, new PointF(0, 30));

            //保存为 PDF 文件
            doc.SaveToFile("PdfGrid.pdf");
        }
    }
}

总结

本文介绍了如何使用 C# 在 PDF 文档中创建功能丰富的表格。通过 PdfGrid 类,开发者不仅能够向表格中添加行、列和数据,还可以灵活设置单元格格式,实现跨行跨列合并、文本对齐、背景颜色设置以及边框样式自定义等高级功能。

示例中创建了一个订单与付款状态表,通过设置列宽、单元格内容和样式,使表格结构更加清晰易读。同时,利用 ColumnSpanRowSpan 属性实现了单元格合并效果,并通过自定义边框和背景色增强了表格的视觉表现力。

借助这种方式,可以轻松生成格式规范、外观专业的 PDF 表格,适用于订单管理、财务报表、业务统计以及各类数据展示场景。

到此这篇关于C#代码实现在PDF文档中创建表格的文章就介绍到这了,更多相关C# PDF创建表格内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文