フッターコンテンツにスキップ
.NETヘルプ

C# DataTable (開発者向けのチュートリアル)

このC#データテーブルに関するチュートリアルへようこそ。 A DataTable は、.NET Frameworkが提供する強力なデータ構造で、データを表形式で保存、操作、クエリすることができます。 このチュートリアルでは、C#のDataTablesの基本を探り、DataViewの使用を含みます。

このチュートリアルの終わりまでに、C#アプリケーションでDataTablesを使用する方法を十分に理解できます。 さあ、始めましょう!

データテーブルの作成

C#でSystem.Data名前空間をインポートする必要があります。 この名前空間には、DataTableクラスを含むデータ操作に関連するさまざまなクラスとメソッドが含まれています。

using System.Data;
using System.Data;
Imports System.Data
$vbLabelText   $csharpLabel

次に、DataTableクラスのインスタンスを作成できます。 最も簡単な方法は、デフォルトのコンストラクターを使用することです。このようにして:

DataTable dt = new DataTable();
DataTable dt = new DataTable();
Dim dt As New DataTable()
$vbLabelText   $csharpLabel

コンストラクタに文字列パラメータを渡すことにより、特定の名前を持つDataTableを作成することもできます。

DataTable dt = new DataTable("Employees");
DataTable dt = new DataTable("Employees");
Dim dt As New DataTable("Employees")
$vbLabelText   $csharpLabel

データテーブルメソッド

列の追加

データテーブルを作成した後、列の追加を開始できます。 列を追加するには、まずDataTypeなどのプロパティを設定する必要があります。

データテーブルに3つの列を追加する例を示します。

DataColumn idColumn = new DataColumn("Id", typeof(int));
DataColumn nameColumn = new DataColumn("Name", typeof(string));
DataColumn ageColumn = new DataColumn("Age", typeof(int));

dt.Columns.Add(idColumn);
dt.Columns.Add(nameColumn);
dt.Columns.Add(ageColumn);
DataColumn idColumn = new DataColumn("Id", typeof(int));
DataColumn nameColumn = new DataColumn("Name", typeof(string));
DataColumn ageColumn = new DataColumn("Age", typeof(int));

dt.Columns.Add(idColumn);
dt.Columns.Add(nameColumn);
dt.Columns.Add(ageColumn);
Dim idColumn As New DataColumn("Id", GetType(Integer))
Dim nameColumn As New DataColumn("Name", GetType(String))
Dim ageColumn As New DataColumn("Age", GetType(Integer))

dt.Columns.Add(idColumn)
dt.Columns.Add(nameColumn)
dt.Columns.Add(ageColumn)
$vbLabelText   $csharpLabel

データテーブルにId列のように複数の列を追加することができます。

データ行の追加

列を定義した後、DataTableに行を追加し始めることができます。 行を追加するには、DataRowクラスの新しいインスタンスを作成し、必要なデータでそのフィールドを埋める必要があります。

ここでは、DataTableに新しい行を追加する方法の例を示します。

DataRow newRow = dt.NewRow();

newRow["Id"] = 1;
newRow["Name"] = "John Doe";
newRow["Age"] = 30;

dt.Rows.Add(newRow);
DataRow newRow = dt.NewRow();

newRow["Id"] = 1;
newRow["Name"] = "John Doe";
newRow["Age"] = 30;

dt.Rows.Add(newRow);
Dim newRow As DataRow = dt.NewRow()

newRow("Id") = 1
newRow("Name") = "John Doe"
newRow("Age") = 30

dt.Rows.Add(newRow)
$vbLabelText   $csharpLabel

同じ方法をループ内で使用して、一度に複数のDataTable行を追加することもできます。

for (int i = 1; i <= 3; i++)
{
    DataRow row = dt.NewRow();
    row["Id"] = i;
    row["Name"] = "Employee " + i;
    row["Age"] = 20 + i;
    dt.Rows.Add(row);
}
for (int i = 1; i <= 3; i++)
{
    DataRow row = dt.NewRow();
    row["Id"] = i;
    row["Name"] = "Employee " + i;
    row["Age"] = 20 + i;
    dt.Rows.Add(row);
}
For i As Integer = 1 To 3
	Dim row As DataRow = dt.NewRow()
	row("Id") = i
	row("Name") = "Employee " & i
	row("Age") = 20 + i
	dt.Rows.Add(row)
Next i
$vbLabelText   $csharpLabel

上記のコードでは、3つのデータ行を追加しました。

データへのアクセス

Columnsコレクションを反復することでアクセスできます。 ここでは、コンソールでDataTableの内容を表示する方法の例を示します。

foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn col in dt.Columns)
    {
        Console.Write(row[col] + "\t");
    }
    Console.WriteLine();
}
foreach (DataRow row in dt.Rows)
{
    foreach (DataColumn col in dt.Columns)
    {
        Console.Write(row[col] + "\t");
    }
    Console.WriteLine();
}
Imports Microsoft.VisualBasic

For Each row As DataRow In dt.Rows
	For Each col As DataColumn In dt.Columns
		Console.Write(row(col) & vbTab)
	Next col
	Console.WriteLine()
Next row
$vbLabelText   $csharpLabel

データの変更

DataRowオブジェクトの値を更新することで変更できます。 特定の従業員の年齢を更新する方法の例を示します。

var primaryKey = 1;
DataRow employeeRow = dt.Rows.Find(primaryKey); // Find the row with the specified primary key
if (employeeRow != null)
{
    employeeRow["Age"] = 35;
}
var primaryKey = 1;
DataRow employeeRow = dt.Rows.Find(primaryKey); // Find the row with the specified primary key
if (employeeRow != null)
{
    employeeRow["Age"] = 35;
}
Dim primaryKey = 1
Dim employeeRow As DataRow = dt.Rows.Find(primaryKey) ' Find the row with the specified primary key
If employeeRow IsNot Nothing Then
	employeeRow("Age") = 35
End If
$vbLabelText   $csharpLabel

行の削除

DataTableから行を削除するには、DataRowオブジェクトでDeleteメソッドを呼び出します。

DataRow employeeRow = dt.Rows.Find(1);
if (employeeRow != null)
{
    employeeRow.Delete();
    dt.AcceptChanges(); // Commit the deletion
}
DataRow employeeRow = dt.Rows.Find(1);
if (employeeRow != null)
{
    employeeRow.Delete();
    dt.AcceptChanges(); // Commit the deletion
}
Dim employeeRow As DataRow = dt.Rows.Find(1)
If employeeRow IsNot Nothing Then
	employeeRow.Delete()
	dt.AcceptChanges() ' Commit the deletion
End If
$vbLabelText   $csharpLabel

DataRowで呼び出すと、行が削除対象としてマークされるだけであることに注意してください。 削除された行を完全に削除するには、AcceptChangesメソッドを呼び出す必要があります。

複数テーブルの管理

場合によっては、複数のデータテーブルを同時に処理する必要があるかもしれません。 複数のDataTableオブジェクトを格納し、それらの関係を管理するためのデータセット変数を作成できます。

LINQを使用したデータのクエリ

LINQ(Language Integrated Query)は、C#における強力な機能で、DataTableオブジェクトを含むさまざまなデータソースからデータをクエリすることができます。 DataTablesでLINQを使用するには、System.Linq名前空間をインポートする必要があります。 LINQを使用して25歳以上の従業員をフィルタリングする方法の例を示します。

using System.Linq;

var filteredRows = dt.AsEnumerable().Where(row => row.Field<int>("Age") > 25);

foreach (DataRow row in filteredRows)
{
    Console.WriteLine(row["Name"]);
}
using System.Linq;

var filteredRows = dt.AsEnumerable().Where(row => row.Field<int>("Age") > 25);

foreach (DataRow row in filteredRows)
{
    Console.WriteLine(row["Name"]);
}
Imports System.Linq

Private filteredRows = dt.AsEnumerable().Where(Function(row) row.Field(Of Integer)("Age") > 25)

For Each row As DataRow In filteredRows
	Console.WriteLine(row("Name"))
Next row
$vbLabelText   $csharpLabel

DataView: ソートとフィルタリング

System.Data名前空間によって提供されるもう一つの有用なクラスです。 データをDataGridViewのようなUIコントロールに表示する必要がある場合に特に便利です。 DataGridViewコントロールにデータを追加するためにデータバインディングを行うこともできます。

従業員をその年齢に基づいてフィルタリングおよびソートするためのDataViewを作成する方法の例を示します。

DataView view = new DataView(dt);

// Filter employees older than 25
view.RowFilter = "Age > 25";

// Sort by age in descending order
view.Sort = "Age DESC";

// Display the filtered and sorted data
foreach (DataRowView rowView in view)
{
    DataRow row = rowView.Row;
    Console.WriteLine(row["Name"]);
}
DataView view = new DataView(dt);

// Filter employees older than 25
view.RowFilter = "Age > 25";

// Sort by age in descending order
view.Sort = "Age DESC";

// Display the filtered and sorted data
foreach (DataRowView rowView in view)
{
    DataRow row = rowView.Row;
    Console.WriteLine(row["Name"]);
}
Dim view As New DataView(dt)

' Filter employees older than 25
view.RowFilter = "Age > 25"

' Sort by age in descending order
view.Sort = "Age DESC"

' Display the filtered and sorted data
For Each rowView As DataRowView In view
	Dim row As DataRow = rowView.Row
	Console.WriteLine(row("Name"))
Next rowView
$vbLabelText   $csharpLabel

IronPDFを使用してDataTableをPDFにエクスポートする

IronPDFは、HTMLをPDFに変換する強力なツールであり、ユーザーフレンドリーなPDF操作機能が充実しており、.NETアプリケーション内でPDF文書の作成、読み取り、編集を可能にします。

using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();

        // Convert HTML String to PDF
        var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>";
        var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent);
        pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf");

        // Convert HTML File to PDF
        var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file
        var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath);
        pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf");

        // Convert URL to PDF
        var url = "http://ironpdf.com"; // Specify the URL
        var pdfFromUrl = renderer.RenderUrlAsPdf(url);
        pdfFromUrl.SaveAs("URLToPDF.pdf");
    }
}
Imports IronPdf

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim renderer = New ChromePdfRenderer()

		' Convert HTML String to PDF
		Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
		Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
		pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")

		' Convert HTML File to PDF
		Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
		Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
		pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")

		' Convert URL to PDF
		Dim url = "http://ironpdf.com" ' Specify the URL
		Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
		pdfFromUrl.SaveAs("URLToPDF.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

このセクションでは、IronPDFを使用してDataTableをPDFドキュメントにエクスポートする方法を学びます。

まず、IronPDF NuGetパッケージをインストールする必要があります。 Visual Studioでパッケージマネージャーコンソールを開き、次のコマンドを実行します。

Install-Package IronPdf

パッケージがインストールされたら、コードで必要な名前空間をインポートすることから始められます。

using IronPdf;
using System.IO;
using IronPdf;
using System.IO;
Imports IronPdf
Imports System.IO
$vbLabelText   $csharpLabel

次に、HTMLテーブルにDataTableを変換するヘルパーメソッドを作成します。IronPDFはPDF文書内のコンテンツをレンダリングするためにHTMLを使用します。

public static string ConvertDataTableToHtml(DataTable dt)
{
    StringBuilder htmlBuilder = new StringBuilder();

    htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>");
    htmlBuilder.AppendLine("<tr>");

    // Add column headers
    foreach (DataColumn col in dt.Columns)
    {
        htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName);
    }

    htmlBuilder.AppendLine("</tr>");

    // Add rows
    foreach (DataRow row in dt.Rows)
    {
        htmlBuilder.AppendLine("<tr>");

        foreach (DataColumn col in dt.Columns)
        {
            htmlBuilder.AppendFormat("<td>{0}</td>", row[col]);
        }

        htmlBuilder.AppendLine("</tr>");
    }

    htmlBuilder.AppendLine("</table>");

    return htmlBuilder.ToString();
}
public static string ConvertDataTableToHtml(DataTable dt)
{
    StringBuilder htmlBuilder = new StringBuilder();

    htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>");
    htmlBuilder.AppendLine("<tr>");

    // Add column headers
    foreach (DataColumn col in dt.Columns)
    {
        htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName);
    }

    htmlBuilder.AppendLine("</tr>");

    // Add rows
    foreach (DataRow row in dt.Rows)
    {
        htmlBuilder.AppendLine("<tr>");

        foreach (DataColumn col in dt.Columns)
        {
            htmlBuilder.AppendFormat("<td>{0}</td>", row[col]);
        }

        htmlBuilder.AppendLine("</tr>");
    }

    htmlBuilder.AppendLine("</table>");

    return htmlBuilder.ToString();
}
Public Shared Function ConvertDataTableToHtml(ByVal dt As DataTable) As String
	Dim htmlBuilder As New StringBuilder()

	htmlBuilder.AppendLine("<table border='1' cellpadding='5' cellspacing='0'>")
	htmlBuilder.AppendLine("<tr>")

	' Add column headers
	For Each col As DataColumn In dt.Columns
		htmlBuilder.AppendFormat("<th>{0}</th>", col.ColumnName)
	Next col

	htmlBuilder.AppendLine("</tr>")

	' Add rows
	For Each row As DataRow In dt.Rows
		htmlBuilder.AppendLine("<tr>")

		For Each col As DataColumn In dt.Columns
			htmlBuilder.AppendFormat("<td>{0}</td>", row(col))
		Next col

		htmlBuilder.AppendLine("</tr>")
	Next row

	htmlBuilder.AppendLine("</table>")

	Return htmlBuilder.ToString()
End Function
$vbLabelText   $csharpLabel

次に、IronPDFが提供するHtmlToPdf classを使用してHTMLテーブルをレンダリングし、PDFファイルとして保存します。

public static void ExportDataTableToPdf(DataTable dt, string outputPath)
{
    // Convert DataTable to HTML
    string htmlTable = ConvertDataTableToHtml(dt);

    // Create a new HTML to PDF renderer
    var renderer = new ChromePdfRenderer();

    // Set global styles for the table
    renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print;
    renderer.RenderingOptions.FirstPageNumber = 1;

    // Render the HTML table as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlTable);

    // Save the PDF file
    pdf.SaveAs(outputPath);
}
public static void ExportDataTableToPdf(DataTable dt, string outputPath)
{
    // Convert DataTable to HTML
    string htmlTable = ConvertDataTableToHtml(dt);

    // Create a new HTML to PDF renderer
    var renderer = new ChromePdfRenderer();

    // Set global styles for the table
    renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print;
    renderer.RenderingOptions.FirstPageNumber = 1;

    // Render the HTML table as a PDF document
    PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlTable);

    // Save the PDF file
    pdf.SaveAs(outputPath);
}
Public Shared Sub ExportDataTableToPdf(ByVal dt As DataTable, ByVal outputPath As String)
	' Convert DataTable to HTML
	Dim htmlTable As String = ConvertDataTableToHtml(dt)

	' Create a new HTML to PDF renderer
	Dim renderer = New ChromePdfRenderer()

	' Set global styles for the table
	renderer.RenderingOptions.CssMediaType = PdfPrintOptions.PdfCssMediaType.Print
	renderer.RenderingOptions.FirstPageNumber = 1

	' Render the HTML table as a PDF document
	Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlTable)

	' Save the PDF file
	pdf.SaveAs(outputPath)
End Sub
$vbLabelText   $csharpLabel

DataTableを作成し、PDFファイルに保存します。

最後に、適切なパラメータでDataTableをエクスポートします。

string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);
Dim pdfOutputPath As String = "Employees.pdf"
ExportDataTableToPdf(dt, pdfOutputPath)
$vbLabelText   $csharpLabel

これは、DataTableの内容を表形式で含む"Employees.pdf"という名前のPDFファイルを作成します。

C#データテーブル(開発者向けチュートリアルの動作)- 図1

結論

このチュートリアルでは、C#におけるDataTablesの基本と、IronPDFライブラリを使用してDataTableをPDFドキュメントにエクスポートする方法を学びました。 一次キー列、データセット変数、フィルタリングとソートのためのDataViewを組み込むことで、データに対してより多くの制御と柔軟性を持てるでしょう。 データテーブルについての良い理解を持ち、C#アプリケーションでプロフェッショナルなPDFレポートを作成するためにIronPDFとデータテーブルを組み合わせて使用する方法を理解しているはずです。

IronPDFはその機能を無料トライアルで試すことができる無料トライアルを提供しており、購入を検討する前にその可能性を探ることができます。

よくある質問

C#のDataTableとは?

DataTable は .NET Framework内の汎用データ構造で、開発者がデータを表形式で保存、操作、クエリできるようにし、アプリケーションで構造化データを扱うのに不可欠です。

C# で DataTable を PDF ドキュメントに変換するにはどうすればよいですか?

C# で DataTable を PDF ドキュメントに変換するには、まず DataTable を HTML テーブルに変換します。IronPDF の HtmlToPdf クラスを使用して HTML を PDF ドキュメントとしてレンダリングし、結果のファイルを保存します。

C# で DataTable を作成するにはどうすればよいですか?

C# で DataTable を作成するには、System.Data 名前空間をインポートし、コンストラクタを使用して DataTable クラスのインスタンスを生成します。必要に応じて特定の名前を指定することもできます。

DataTable に列を追加するにはどのような手順がありますか?

DataTable に列を追加するには、DataColumn クラスのインスタンスを作成し、ColumnName や DataType などのプロパティを設定し、それらを DataTable の Columns コレクションに追加します。

DataTable からデータを PDF にエクスポートしてレポートするにはどうすればよいですか?

DataTable からデータを PDF にエクスポートするには、DataTable を HTML テーブル形式に変換し、その後 IronPDF を使用してこの HTML を PDF ドキュメントとしてレンダリングしてプロフェッショナルグレードのレポートを作成します。

C# で DataTable に行を追加するにはどうすればよいですか?

C# で DataTable に行を追加するには、新しい DataRow インスタンスを作成し、データでそれを埋めたうえで DataTable の Rows コレクションに追加します。このプロセスは、ループを使用して複数の行に対して繰り返すことができます。

LINQ は何であり、DataTables でどのように使用できますか?

LINQ (Language Integrated Query) は C# での強力なクエリ ツールであり、DataTables を含むさまざまなソースからデータをフィルタリング、並べ替え、操作することができ、データ操作を効率化します。

DataView を使用して DataTable をフィルタリングおよび並べ替えするにはどうすればよいですか?

DataView は DataTable のフィルターまたはソートされたビューを作成するための便利な方法を提供します。RowFilter および Sort プロパティを設定することで、データの表示方法を制御でき、特に UI コンポーネントで役立ちます。

DataTables を PDF にエクスポートするための必要なライブラリをどのようにインストールしますか?

DataTables を PDF にエクスポートするための必要な IronPDF ライブラリをインストールするには、Visual Studio のパッケージ マネージャー コンソールを使用して、コマンド: Install-Package IronPDF を実行します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

彼の主要なIronPDFとIron Suite .NETライブラリは、世界中で3000万以上のNuGetインストールを達成し、彼の基礎となるコードは世界中で使用されている開発者ツールに力を与え続けています。25年の商業経験と41年のコーディングの専門知識を持つJacobは、次世代の技術リーダーを指導しながら、エンタープライズグレードのC#、Java、Python PDFテクノロジーにおけるイノベーションの推進に注力しています。

アイアンサポートチーム

私たちは週5日、24時間オンラインで対応しています。
チャット
メール
電話してね