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

多くの .NET ベースの業務システムでは、構造化データが DataTable 形式で管理されています。これらのデータを配布、アーカイブ、あるいは読み取り専用のレポートとして提供する場合、C# で DataTable を PDF に出力することは非常に一般的かつ実用的な要件です。
Excel や CSV などのフォーマットと比べ、PDF は版面の安定性、視覚的一貫性、文書の完全性が重要な場面に適しています。データの編集性よりも、レポート、請求書、監査記録、システム自動生成の公式文書などで特に有用です。
本記事では、コード中心のアプローチで C# で DataTable を PDF に変換する方法 を解説します。例は Spire.PDF for .NET を使用し、PdfGrid コンポーネントで DataTable の内容を構造化された表として PDF にレンダリングします。
目次
本質的には、DataTable を PDF に出力することは、データバインディング + レンダリング の問題であり、低レベルの描画処理ではありません。
つまり、各行の位置や列幅を手動で計算したり、ページ分割のロジックを自分で処理する必要はありません。合理的な方法は、既存の DataTable を直接 PDF 表コンポーネントにバインドし、レンダリングエンジンにレイアウトとページ分割を自動で行わせることです。
Spire.PDF for .NET では、この役割を PdfGrid クラスが担います。
PdfGrid は Spire.PDF for .NET のクラスで、PDF ドキュメント内に構造化表データを表示するためのものです。行、列、ヘッダー、ページ分割などの概念を中心に扱い、単なるグラフィック描画ではありません。
技術的には、PdfGrid は以下の重要な機能を提供します:
つまり、DataTable の PDF 出力は 宣言的操作 のように扱えます。どのデータをレンダリングするかを指定するだけで、ページ内での配置やページ分割 は PDF エンジンが自動で処理します。
次章以降では、この考え方に基づき、具体的な実装方法や実務での最適化テクニックを解説します。
本記事のサンプルコードは .NET Framework および最新 .NET(6 以上) プロジェクトで共通して使用可能です。
実装はすべてマネージコードで行うため、プラットフォーム固有の追加設定は不要です。
NuGet を使用して Spire.PDF for .NET をインストールできます:
Install-Package Spire.PDF
または、Spire.PDF for .NET を直接ダウンロード して、手動でプロジェクトに追加することも可能です。
インストール完了後、PDF ドキュメント作成、ページ管理、表レンダリング、スタイル制御のための API が利用可能になります。
環境準備が整ったら、DataTable の PDF 出力は 線形で実装指向 のプロセスになります。
基本的な考え方は:既存の DataTable を PdfGrid にバインドし、レイアウト、ページ分割、表描画の責任を PDF エンジンに任せることで、行や列、罫線を手動で描画する必要はありません。
実装フローは一般的に次のステップで構成されます:
注意:DataTable に日本語や中国語などの文字が含まれる場合、デフォルトフォントでは正しく表示されず空白になることがあります。 レンダリング前に「メイリオ」や「MS ゴシック」などの日本語対応フォントを PdfTrueTypeFont を通して表スタイルに適用する必要があります。
実際のプロジェクトでは、これらのステップを同一コードフロー内で順次実行することが多いです。以下に、すぐに使える完全サンプルを示します。
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Grid;
using System.Data;
using System.Drawing;
DataTable dataTable = new DataTable();
dataTable.Columns.Add("OrderId", typeof(int));
dataTable.Columns.Add("CustomerName", typeof(string));
dataTable.Columns.Add("OrderDate", typeof(DateTime));
dataTable.Columns.Add("TotalAmount", typeof(decimal));
// 実務に近い日本向けサンプルデータ
dataTable.Rows.Add(1001, "楽天市場", DateTime.Today, 15800.75m);
dataTable.Rows.Add(1002, "Amazonジャパン", DateTime.Today, 8900.50m);
dataTable.Rows.Add(1003, "ヨドバシカメラ", DateTime.Today, 23400.00m);
dataTable.Rows.Add(1004, "ビックカメラ", DateTime.Today, 17600.20m);
dataTable.Rows.Add(1005, "メルカリ", DateTime.Today, 11200.00m);
dataTable.Rows.Add(1006, "LOHACO", DateTime.Today, 9800.30m);
PdfDocument document = new PdfDocument();
PdfPageBase page = document.Pages.Add();
PdfGrid grid = new PdfGrid();
grid.DataSource = dataTable;
// 日本語対応フォントを設定(文字化け防止)
PdfGridCellStyle cellStyle = new PdfGridCellStyle();
// メイリオフォントを使用し、第二引数 true でフォントを PDF に埋め込む
cellStyle.Font = new PdfTrueTypeFont(new Font("メイリオ", 9f), true);
grid.Rows.ApplyStyle(cellStyle);
// 表格をページ上に描画(ページ上端から40fの位置)
grid.Draw(page, new PointF(0, 40f));
// PDF保存
document.SaveToFile("DataTableToPDF.pdf");
document.Close();
以下は生成されたPDFファイルの効果プレビューです。

このコードで DataTable → PDF の完全な出力が実現できます。 生成される PDF は構造が明確で、ページ分割にも対応しており、多くの実務シナリオでそのまま利用可能です。
もちろん、実際のプロジェクトでは、通常、表の位置、ページサイズ、方向、スタイルに対してより高い要求が課されます。 次の章では、コアのエクスポートロジックを変更せずに、レイアウト、ページ分割、視覚効果を細かく制御する方法に焦点を当てて説明します。
実務文書では、表は通常ページの一部に過ぎません。ページサイズ、表の開始位置、ページ分割方法が、1ページまたは複数ページにわたる表の表示に影響します。
PdfGrid では、これらは表自体が管理するのではなく、ページ作成時や Draw メソッド呼び出し時に解決されます。 PdfGrid は絶対位置指定やページ切り替えを直接担当せず、ページ設定や描画パラメータが実際に機能します。
以下は、実務レポートでよく使われるレイアウトとページ分割の設定例です。
PdfDocument document = new PdfDocument();
// A4ページを作成し、マージンを設定
PdfPageBase page = document.Pages.Add(
PdfPageSize.A4,
new PdfMargins(40),
PdfPageRotateAngle.RotateAngle0, // ページ座標系の回転角度
PdfPageOrientation.Landscape // ページ方向:横向き
);
PdfGrid grid = new PdfGrid();
grid.DataSource = dataTable;
// 複数ページにわたる場合、ヘッダーを繰り返し表示
grid.RepeatHeader = true;
// 表の描画開始位置を指定
float startX = 40f;
float startY = 80f;
// 日本語対応フォントを適用
PdfGridCellStyle cellStyle = new PdfGridCellStyle();
cellStyle.Font = new PdfTrueTypeFont(new Font("メイリオ", 9f), true);
grid.Rows.ApplyStyle(cellStyle);
// 表を描画
grid.Draw(page, new PointF(startX, startY));
この設定で生成される PDF の例:

PdfPageBase
RepeatHeader
Draw メソッド
ページの幾何設定、表の開始位置、ページ分割ルールを統一することで、PdfGrid は手動でページ分割や行ごとのレイアウトを制御することなく、安定した複数ページ表を生成できます。
レイアウトが安定したら、次は表の外観制御です。PdfGrid は集中型スタイルモデルを提供しており、データバインディングやページ分割に影響を与えず、表全体や列、行のスタイルを設定できます。
以下は、レポートでよく使われるスタイル設定例です。
PdfDocument document = new PdfDocument();
PdfPageBase page = document.AppendPage();
PdfGrid grid = new PdfGrid();
grid.DataSource = dataTable;
// ヘッダースタイルの作成と適用
PdfGridCellStyle headerStyle = new PdfGridCellStyle();
headerStyle.Font =
new PdfFont(PdfFontFamily.Helvetica, 10f, PdfFontStyle.Bold);
headerStyle.BackgroundBrush =
new PdfSolidBrush(Color.FromArgb(60, 120, 200));
headerStyle.TextBrush = PdfBrushes.White;
grid.Headers.ApplyStyle(headerStyle);
// 行スタイル
PdfGridCellStyle defaultStyle = new PdfGridCellStyle();
defaultStyle.Font = new PdfTrueTypeFont(new Font("メイリオ", 9f), true);
PdfGridCellStyle alternateStyle = new PdfGridCellStyle();
alternateStyle.BackgroundBrush =
new PdfSolidBrush(Color.LightSkyBlue);
alternateStyle.Font = new PdfTrueTypeFont(new Font("メイリオ", 10f), true);
// 行の交互色適用
for (int rowIndex = 0; rowIndex < grid.Rows.Count; rowIndex++)
{
if (rowIndex % 2 == 0)
{
grid.Rows[rowIndex].ApplyStyle(defaultStyle);
}
else
{
grid.Rows[rowIndex].ApplyStyle(alternateStyle);
}
}
// 列幅を明示的に設定
grid.Columns[0].Width = 60f; // OrderId
grid.Columns[1].Width = 140f; // CustomerName
grid.Columns[2].Width = 90f; // OrderDate
grid.Columns[3].Width = 90f; // TotalAmount
// 表を描画
grid.Draw(page, new PointF(40f, 80f));
適用後の PDF の例:

ヘッダースタイル
データ行スタイル
列幅制御
注意:スタイルは grid.Draw(...) を呼ぶ前に設定してください。 すべてのスタイルは描画前に解析され、ページ分割やデータバインディングに影響せず適用されます。
より複雑な表のスタイル制御(枠線、配置、条件付きスタイルなど)が必要な場合は、C# を使用した PDF 表の作成と装飾 を参照してください。
表の描画が完了したら、最後に PDF を出力します。 ファイル出力でもメモリストリーム出力でも、表の生成・描画ロジックは同一です。違いは出力先だけです。
PDF を直接ファイルに保存。デスクトップアプリやバッチ処理向け。
document.SaveToFile("DataTableReport.pdf");
document.Close();
適用例:
Web 系では、PDF をディスクに書き込まず、メモリ上で処理しそのままクライアントに返すことが可能。
using (MemoryStream stream = new MemoryStream())
{
document.SaveToStream(stream);
document.Close();
byte[] pdfBytes = stream.ToArray();
// pdfBytes を HTTP レスポンスとして返す
}
ASP.NET コントローラや Minimal API との統合も容易で、テンポラリファイル不要です。 参考:ASP.NET で PDF を生成して返す
PdfGrid はデータを文字列としてレンダリングします。 フォーマット指定が必要な場合、バインド前に統一処理します。
例:
データレイヤで処理するのが推奨です。
DataTable に DBNull.Value があると、セルが空白になったりレイアウトが崩れる場合があります。
バインド前に正規化すると安全です:
row["TotalAmount"] =
row["TotalAmount"] == DBNull.Value ? 0m : row["TotalAmount"];
列が多い、内容が長い場合、表がページ幅を超えることがあります。
対策:
これらは レイアウト層 で処理するのが正しい方法です。
数百~数千行の DataTable では性能差が顕著になります。
推奨:
例:大規模データで grid.Rows[rowIndex].ApplyStyle(...) をループで繰り返すと負荷増。 不要であれば grid.Rows.ApplyStyle(...) で一括適用が最適。
Web 環境では、PDF生成をリクエストスレッド外で処理すると、応答のブロックを回避できます。
C# で DataTable を PDF に出力 する際、手動で表を構築したり低レベル描画を行う必要はありません。 PdfGrid に DataTable を直接バインドするだけで、自動ページ分割対応の PDF 表を生成でき、レイアウトや外観も容易に制御可能です。
この記事では、実務視点で導出プロセス、レイアウト、スタイル設定、データ準備などの重要ポイントを解説しました。 この方法はシンプルなレポートから、複数ページ・大規模データを含む複雑な文書まで拡張可能です。
試用したい場合は E-ICEBLUE から 一時ライセンス を取得して、フル機能を制限なくテストできます。
構造が明確で、ページ分割に対応し、版面が安定した表型 PDF 文書 を作る場合に最適です。 列生成、ヘッダー、ページ分割を自動で処理するため、手動描画よりもレポートや請求書、監査用文書に適しています。
日付形式、数値精度、空値処理などのデータ規格化はバインド前に行います。 PdfGrid はレイアウトやスタイル担当であり、データ変換には使用しません。
可能です。PdfGrid は自動ページ分割とヘッダー繰り返し表示をサポートします。大規模データでは、行・セル単位のスタイル適用を避け、表や列単位のスタイルを使用するとパフォーマンスが維持できます。
PDF は、データの共有や記録に広く使われる人気のあるドキュメント形式です。特に PDF に含まれる表のデータを抽出する必要がある場面に出くわすことがあります。例えば、請求書の PDF に保存された表の中に有用な情報があり、そのデータを分析や計算に利用したい場合です。本記事では、Spire.PDF for .NET を使用して、PDF の表からデータを抽出し、それをテキストファイルや Excel ワークシートに保存する方法を紹介します。
まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.PDF
Spire.PDF for .NET には、PdfTableExtractor.ExtractTable() メソッドがあり、PDF ページ上のすべての表を抽出することができます。このメソッドを使用して PDF ドキュメントから表を抽出した後、PdfTable.GetText() メソッドを使用して表の値を取得し、それをテキストファイルに書き出すことができます。PDF表データをテキストファイルに抽出する手順は以下の通りです:
using Spire.Pdf;
using Spire.Pdf.Utilities;
using System.Text;
namespace PDFTableToText
{
class Program
{
static void Main(string[] args)
{
// PdfDocumentオブジェクトを作成し、PDFドキュメントをロード
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Sample.pdf");
// 読み込んだPDFのためのテーブルエクストラクターを初期化
PdfTableExtractor tableExtractor = new PdfTableExtractor(pdf);
// PDFの各ページを繰り返し処理
for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
{
// 現在のページからテーブルを抽出
PdfTable[] tables = tableExtractor.ExtractTable(pageIndex);
if (tables != null)
{
// 抽出された各テーブルを繰り返し処理
for (int tableIndex = 0; tableIndex < tables.Length; tableIndex++)
{
// StringBuilderオブジェクトを作成
StringBuilder stringBuilder = new StringBuilder();
// テーブルの各行と列を繰り返し処理
for (int rowIndex = 0; rowIndex < tables[tableIndex].GetRowCount(); rowIndex++)
{
for (int columnIndex = 0; columnIndex < tables[tableIndex].GetColumnCount(); columnIndex++)
{
// テーブルのセルテキストを取得し、改行を削除
string cellText = tables[tableIndex].GetText(rowIndex, columnIndex);
string text = cellText.Replace("\n", " ");
// StringBuilderオブジェクトにセルテキストを追加
if (columnIndex < tables[tableIndex].GetColumnCount() - 1)
{
stringBuilder.Append(text + "");
}
else
{
stringBuilder.Append(text);
}
}
// 各テーブル行のために行を切り替え
if (rowIndex < tables[tableIndex].GetRowCount() - 1)
{
stringBuilder.AppendLine();
}
}
// テーブル内容をテキストファイルに書き込み
string outputFilePath = $"output/Page{pageIndex + 1}_Table{tableIndex + 1}.txt";
File.WriteAllText(outputFilePath, stringBuilder.ToString());
}
}
}
}
}
}

PDF 表のセルの値を上記と同様に取得し、Spire.XLS for .NET を使用して Excel ファイルに書き出すことができます。最初に Spire.XLS for .NET をインストールする必要があります:
PM> Install-Package Spire.XLS
PDF 表データを Excel ファイルに抽出する手順は以下の通りです:
using Spire.Pdf;
using Spire.Pdf.Utilities;
using Spire.Xls;
using System.Text;
namespace PDFTableToText
{
class Program
{
static void Main(string[] args)
{
// PdfDocumentオブジェクトを作成し、PDFドキュメントをロード
PdfDocument pdf = new PdfDocument();
pdf.LoadFromFile("Sample.pdf");
// Workbookオブジェクトを作成
Workbook workbook = new Workbook();
// デフォルトのワークシートをクリア
workbook.Worksheets.Clear();
// 読み込んだPDFのためのテーブルエクストラクターを初期化
PdfTableExtractor tableExtractor = new PdfTableExtractor(pdf);
// PDFの各ページを繰り返し処理
for (int pageIndex = 0; pageIndex < pdf.Pages.Count; pageIndex++)
{
// 現在のページからテーブルを抽出
PdfTable[] tables = tableExtractor.ExtractTable(pageIndex);
if (tables != null)
{
// ページ上の各抽出されたテーブルを繰り返し処理
for (int tableIndex = 0; tableIndex < tables.Length; tableIndex++)
{
// ワークブックにワークシートを追加
Worksheet sheet = workbook.Worksheets.Add($"Page{pageIndex + 1}-Table{tableIndex + 1}");
// テーブル内の各行と列を繰り返し処理
for (int rowIndex = 0; rowIndex < tables[tableIndex].GetRowCount(); rowIndex++)
{
for (int columnIndex = 0; columnIndex < tables[tableIndex].GetColumnCount(); columnIndex++)
{
// テーブルからセルテキストを取得し、改行を削除
string cellText = tables[tableIndex].GetText(rowIndex, columnIndex);
string text = cellText.Replace("\n", "");
// ワークシートの対応する位置にセルテキストを挿入
sheet.Range[rowIndex + 1, columnIndex + 1].Text = text;
}
}
// テーブルヘッダのフォーマットを設定
sheet.Rows[0].Style.Font.FontName = "Yu Gothic UI";
sheet.Rows[0].Style.Font.Size = 12;
sheet.Rows[0].Style.Font.IsBold = true;
sheet.Rows[0].Style.HorizontalAlignment = HorizontalAlignType.Center;
// データ行のフォーマットを設定
for (int rowIndex = 1; rowIndex < sheet.Rows.Length; rowIndex++)
{
sheet.Rows[rowIndex].Style.Font.FontName = "Yu Gothic UI";
sheet.Rows[0].Style.Font.Size = 12;
sheet.Rows[0].Style.HorizontalAlignment = HorizontalAlignType.Left;
}
// 各列を自動調整
for (int columnIndex = 1; columnIndex <= sheet.Columns.Length; columnIndex++)
{
sheet.AutoFitColumn(columnIndex);
}
}
}
}
// ワークブックを保存
workbook.SaveToFile("PDFTableToExcel.xlsx", Spire.Xls.FileFormat.Version2016);
pdf.Close();
workbook.Dispose();
}
}
}

結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。
表は、データを表示するための一般的な方法です。行と列で表示されるデータに、読み手が素早く効率的にアクセスすることができます。表形式で表示されたデータは、通常のテキストよりも読者に深い印象を与えます。また、読者はデータを比較したり、データ間の関係を理解したりすることが容易になります。この記事では、Spire.PDF for .NET を使用して PDF ドキュメントに表を作成する方法について説明します。
Spire.PDF for .NET は、PDF ドキュメントの表を扱うために PdfTable と PdfGrid クラスを提供しています。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つのセクションでは、PdfTable と PdfGrid クラスを使用して、それぞれ PDF ドキュメントに表を作成する方法について説明します。
まず、Spire.PDF for .NET パッケージに含まれている DLL ファイルを .NET プロジェクトの参照として追加する必要があります。DLL ファイルは、このリンクからダウンロードするか、NuGet を介してインストールできます。
PM> Install-Package Spire.PDF以下は、PdfTable クラスを使用して、表を作成する詳細な操作の手順です。
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
以下は、PdfGrid クラスを使用してテーブルを作成するための詳細な手順です。
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
結果ドキュメントから評価メッセージを削除したい場合、または機能制限を取り除く場合は、についてこのメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。にお問い合わせ、30 日間有効な一時ライセンスを取得してください。