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

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

このC#データテーブルに関するチュートリアルへようこそ。 DataTable は、 .NET Frameworkによって提供される強力なデータ構造であり、表形式でデータを保存、操作、および照会することができます。 このチュートリアルでは、C# での DataTables の基本について説明します。これには、DataTables の作成と変更、列と行の追加、データのクエリ、DataView を使用したフィルタリングと並べ替えなどが含まれます。

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

データテーブルの作成

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

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

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

DataTable dt = new DataTable();
DataTable dt = new DataTable();
$vbLabelText   $csharpLabel

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

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

データテーブルメソッド

列の追加

データテーブルを作成した後、列の追加を開始できます。 列を追加するには、まず DataColumn クラスのインスタンスを作成し、そのプロパティ (ColumnNameDataType など) を設定する必要があります。

データテーブルに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);
$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);
$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);
}
$vbLabelText   $csharpLabel

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

データへのアクセス

DataTable に格納されているデータにアクセスするには、Rows および 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();
}
$vbLabelText   $csharpLabel

データの変更

DataTable オブジェクトの値を更新することで、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;
}
$vbLabelText   $csharpLabel

行の削除

DataRow オブジェクトの Delete メソッドを呼び出すことによって、DataTable から行を削除できます。

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
}
$vbLabelText   $csharpLabel

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

複数テーブルの管理

場合によっては、複数のデータテーブルを同時に処理する必要があるかもしれません。 複数の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"]);
}
$vbLabelText   $csharpLabel

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

DataView は、System.Data 名前空間によって提供されるもう 1 つの便利なクラスであり、これを使用すると、DataTable の並べ替えられたビューやフィルターされたビューを作成できます。 これは、DataGridView のような UI コントロールにデータを表示する必要がある場合に特に便利です。 また、データ バインディングを実行して、DataTable から 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"]);
}
$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");
    }
}
$vbLabelText   $csharpLabel

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

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

Install-Package IronPdf

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

using IronPdf;
using System.IO;
using IronPdf;
using 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();
}
$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);
}
$vbLabelText   $csharpLabel

ExportDataTableToPdf メソッドは、HTML テーブルから DataTable を作成し、それを PDF ファイルに保存します。

最後に、適切なパラメータを使用して ExportDataTableToPdf メソッドを呼び出して、DataTable をエクスポートします。

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

これにより、DataTable の内容が表形式で含まれる"Employees.pdf"という名前の PDF ファイルが作成されます。

C# DataTable (開発者向けチュートリアル) - 図 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テクノロジーにおけるイノベーションの推進に注力しています。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me