チュートリアル

簡単にライブラリーを使用するためのチュートリアルコレクション

チュートリアル».NET»Spire.PDF for .NET»»C#/VB.NET:PDF ドキュメントに表を作成する方法
2023-03-01

C#/VB.NET:PDF ドキュメントに表を作成する方法

表は、データを表示するための一般的な方法です。行と列で表示されるデータに、読み手が素早く効率的にアクセスすることができます。表形式で表示されたデータは、通常のテキストよりも読者に深い印象を与えます。また、読者はデータを比較したり、データ間の関係を理解したりすることが容易になります。この記事では、Spire.PDF for .NET を使用して PDF ドキュメントに表を作成する方法について説明します。

Spire.PDF for .NET は、PDF ドキュメントの表を扱うために PdfTablePdfGrid クラスを提供しています。PdfTable クラスは、書式を少なくした簡単な表を作成するために使用することができます。また、PdfGrid クラスは、複雑な表を作成するために使用することができます。

この2つのクラスの違いは以下のとおりです。

PdfTable PdfGrid
書式
イベント経由で設定可能、API は未対応。 API 経由で設定可能。
API 経由で設定可能(StringFormat)。 API 経由で設定可能(StringFormat)。
セル イベント経由で設定可能、API は未対応。 API 経由で設定可能。
その他
水平方向のセルの結合 未対応。 API経由で設定可能。
垂直方向のセルの結合 イベント経由で設定可能、API は未対応。 API経由で設定可能。
ネストされた表 イベント経由で設定可能、API は未対応。 API経由で設定可能。
イベント BeginCellLayout,  EndCellLayout, BeginRowLayout, EndRowLayout, BeginPageLayout, EndPageLayout. BeginPageLayout, EndPageLayout

以下の2つのセクションでは、PdfTablePdfGrid クラスを使用して、それぞれ PDF ドキュメントに表を作成する方法について説明します。

Spire.PDF for .NET をインストールします

まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。

PM> Install-Package Spire.PDF

PdfTable クラスを使用して表を作成する

以下は、PdfTable クラスを使用して、表を作成する詳細な操作の手順です。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument.Pages.Add() メソッドを使用して、ページを追加します。
  • PdfTable のオブジェクトを作成します。
  • PdfTable を通して表のスタイルを設定します。
  • PdfTable を通して表にデータを挿入します。
  • BeginRowLayout イベントで、表の行の高さと色を設定します。
  • Draw() メソッドを使用して、ページ上に表を描画します。
  • 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)
        {
            //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("Yu Mincho", 12f, FontStyle.Regular), true);
            table.Style.HeaderStyle.Font = new PdfTrueTypeFont(new Font("Yu Mincho", 12f, FontStyle.Bold), true);

            //DataTableオブジェクトを作成する
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("番号");
            dataTable.Columns.Add("名前");
            dataTable.Columns.Add("部門");
            dataTable.Columns.Add("職位");
            dataTable.Columns.Add("レベル");
            dataTable.Rows.Add(new string[] { "1", "鈴木 賢", "情報部門", "マネージャー", "1" });
            dataTable.Rows.Add(new string[] { "3", "中村 佑美", "人事部門", "マネージャー", "1" });
            dataTable.Rows.Add(new string[] { "4", "宇田川 希恵", "営業部門", "マネージャー", "1" });
            dataTable.Rows.Add(new string[] { "7", "野口 翔", "営業部門", "営業担当者", "2" });
            dataTable.Rows.Add(new string[] { "9", "大野 良二", "人事部門", "人事部長", "2" });
            dataTable.Rows.Add(new string[] { "11", "川口 美紀", "開発部門", "開発スタッフ", "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));

            //ドキュメントを保存する
            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;
            }
        }
    }
}
Imports System
Imports System.Data
Imports System.Drawing
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Tables

Namespace CreateTable
    Class Program
        Shared Sub Main(ByVal args() As String)
            'PdfDocumentのオブジェクトを作成する
            Dim doc As PdfDocument = New PdfDocument()

            'ページを追加する
            Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4, New PdfMargins(40))

            'PdfTableのオブジェクトを作成する
            Dim table As PdfTable = New PdfTable()

            '表のヘッダーや他のセルのフォントを設定する
            table.Style.DefaultStyle.Font = New PdfTrueTypeFont(New Font("Yu Mincho", 12.0F, FontStyle.Regular), True)
            table.Style.HeaderStyle.Font = New PdfTrueTypeFont(New Font("Yu Mincho", 12.0F, FontStyle.Bold), True)

            'DataTableオブジェクトを作成する
            Dim dataTable As DataTable = New DataTable()
            dataTable.Columns.Add("番号")
            dataTable.Columns.Add("名前")
            dataTable.Columns.Add("部門")
            dataTable.Columns.Add("職位")
            dataTable.Columns.Add("レベル")
            Dim String() As DataTable.Rows.Add(New
            {
            	 "1", "鈴木 賢", "情報部門", "マネージャー", "1" 
            }
)
            Dim String() As DataTable.Rows.Add(New
            {
            	 "3", "中村 佑美", "人事部門", "マネージャー", "1" 
            }
)
            Dim String() As DataTable.Rows.Add(New
            {
            	 "4", "宇田川 希恵", "営業部門", "マネージャー", "1" 
            }
)
            Dim String() As DataTable.Rows.Add(New
            {
            	 "7", "野口 翔", "営業部門", "営業担当者", "2" 
            }
)
            Dim String() As DataTable.Rows.Add(New
            {
            	 "9", "大野 良二", "人事部門", "人事部長", "2" 
            }
)
            Dim String() As DataTable.Rows.Add(New
            {
            	 "11", "川口 美紀", "開発部門", "開発スタッフ", "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)

            '他のセルのテキストアライメントを設定する
            Dim i As Integer
            For i = 0 To table.Columns.Count - 1 Step i + 1
                table.Columns(i).StringFormat = New PdfStringFormat(PdfTextAlignment.Center, PdfVerticalAlignment.Middle)
            Next

            'BeginRowLayoutイベントに対応
            table.BeginRowLayout += Table_BeginRowLayout()

            'ページ上に表を描画する
            table.Draw(page, New PointF(0, 30))

            'ドキュメントを保存する
            doc.SaveToFile("PdfTable.pdf")
        End Sub

        'イベント処理
        Private Shared Sub Table_BeginRowLayout(ByVal sender As Object, ByVal args As BeginRowLayoutEventArgs)
            '行の高さを設定する
            args.MinimalHeight = 20.0F

            '行の背景色を設定する
            If args.RowIndex < 0 Then
                Return
            End If
            If args.RowIndex % 2 = 1 Then
                args.CellStyle.BackgroundBrush = PdfBrushes.LightGray
            Else
                args.CellStyle.BackgroundBrush = PdfBrushes.White
            End If
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF ドキュメントに表を作成する方法

PdfGrid クラスを使用して表を作成する

以下は、PdfGrid クラスを使用してテーブルを作成するための詳細な手順です。

  • PdfDocument のオブジェクトを作成します。
  • PdfDocument.Pages.Add() メソッドを使用して、ページを追加します。
  • PdfGrid のオブジェクトを作成します。
  • PdfGrid.Style プロパティを使って表のスタイルを設定します。
  • PdfGrid.Rows.Add() メソッドを使用して、表に行を追加します。
  • PdfGridRow.Cells[index].Value プロパティを使って、指定したセルにデータを挿入します。
  • PdfGridRow.RowSpan または PdfGridRow.ColumnSpan プロパティを使用してセルを垂直方向または水平方向に結合します。
  • PdfGridRow.Cells[index].StringFormatPdfGridRow.Cells[index].Style プロパティを使用して、指定したセルの書式を設定します。
  • PdfGrid.Draw() メソッドを使用して、ページ上に表を描画します。
  • 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)
        {
            //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("Yu Mincho", 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 = "Neighbors Technology";
            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));

            //ドキュメントを保存する
            doc.SaveToFile("PdfGrid.pdf");
        }
    }
}
Imports Spire.Pdf
Imports Spire.Pdf.Graphics
Imports Spire.Pdf.Grid
Imports System.Drawing

Namespace CreateGrid
    Class Program
        Shared Sub Main(ByVal args() As String)
            'PdfDocumentのオブジェクトを作成する
            Dim doc As PdfDocument = New PdfDocument()

            'ページを追加する
            Dim page As PdfPageBase = doc.Pages.Add(PdfPageSize.A4, New PdfMargins(40))

            'PdfGridのオブジェクトを作成する
            Dim grid As PdfGrid = New PdfGrid()

            'セルのパディングを設定する
            grid.Style.CellPadding = New PdfPaddings(1, 1, 1, 1)

            'フォントを設定する
            grid.Style.Font = New PdfTrueTypeFont(New Font("Yu Mincho", 13.0F, FontStyle.Regular), True)

            '行を追加する
            Dim row1 As PdfGridRow = grid.Rows.Add()
            Dim row2 As PdfGridRow = grid.Rows.Add()
            Dim row3 As PdfGridRow = grid.Rows.Add()
            Dim row4 As PdfGridRow = grid.Rows.Add()
            grid.Columns.Add(4)

            '列の幅を設定する
            Dim col As PdfGridColumn
            For Each col In grid.Columns
                col.Width = 110.0F
            Next

            '特定のセルにデータを書き込む
            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 = "Neighbors Technology"
            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

            '枠線の形式を設定する
            Dim borders As PdfBorders = New PdfBorders()
            borders.All = New PdfPen(Color.Orange, 0.8F)
            Dim pgr As PdfGridRow
            For Each pgr In grid.Rows
                Dim pgc As PdfGridCell
                For Each pgc In pgr.Cells
                    pgc.Style.Borders = borders
                Next
            Next

            'ページ上の表を描画する
            grid.Draw(page, New PointF(0, 30))

            'ドキュメントを保存する
            doc.SaveToFile("PdfGrid.pdf")
        End Sub
    End Class
End Namespace

C#/VB.NET:PDF ドキュメントに表を作成する方法

一時ライセンスを申請する

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。

Read 547 times