跳過到頁腳內容
.NET幫助

C# DataTable(開發者的工作原理教程)

歡迎使用這個關於C# DataTables的教程。 一個DataTable是由.NET框架提供的一個強大的資料結構,允許您以表格格式存儲、操作和查詢資料。 在本教程中,我們將探討C#中DataTables的基礎,包括創建和修改DataView進行過濾和排序。

完成本教程後,您將對如何在您的C#應用程式中使用DataTables有深入的了解。 讓我們開始吧!

創建DataTable

要在C#中創建一個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

DataTable方法

添加列

創建DataTable後,您可以開始向其中添加列。 要添加一列,您首先需要創建DataType

這是一個如何向DataTable添加三列的例子:

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

在以上代碼中,我們添加了三個數據行。

訪問數據

您可以通過迭代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中的數據。 這是一個如何更新特定員工年齡的例子:

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

請記住,在Delete只會標記該行待刪除。 您需要在AcceptChanges方法以永久刪除已刪除的行。

管理多個表格

在某些情況下,您可能需要同時處理多個數據表。 您可以創建一個數據集變量來存儲多個DataTable對象並管理它們之間的關係。

使用LINQ查詢數據

LINQ(語言集成查詢)是C#中的一個強大功能,允許您從各種數據源查詢數據,包括DataTable對象。 要將LINQ用於DataTables,您需要導入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: 排序和過濾

DataTable的排序或過濾視圖。 當您需要在UI控制中顯示數據時,這特別有用,比如DataGridView。 我們還可以通過將數據綁定添加到從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中打開Package Manager Console並運行以下命令:

Install-Package IronPdf

安裝包後,您可以通過在代碼中導入必要的命名空間來開始:

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

接下來,創建一個輔助方法,將DataTable轉換為HTML表格,因為IronPDF使用HTML來渲染PDF文件中的內容:

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

DataTable,並將其儲存到PDF文件中。

最後,調用DataTable

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

這將創建一個名為"Employees.pdf"的PDF文件,包含您的DataTable的表格內容。

C# DataTable(開發人員教程的工作原理)- 圖1

結論

在這個教程中,您已學習了C#中DataTables的基礎知識以及如何使用IronPDF程式庫將DataTable導出為PDF文件。 通過使用主鍵列、數據集變量和DataView進行過濾和排序,您將對您的數據有更大的控制和靈活性。 現在您應該已對DataTables有了深入的了解,並知道如何將IronPDF與DataTables結合使用,以在您的C#應用程式中創建專業外觀的PDF報告。

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 的步驟是什麼?

要向 DataTable 添加列,創建 DataColumn 類的實例,配置如 ColumnName 和 DataType 等屬性,然後將它們添加到 DataTable 的 Columns 集合中。

如何將 DataTable 的數據導出為 PDF 以用於報告目的?

您可以通過將 DataTable 轉換為 HTML 表格格式,然後使用 IronPDF 將此 HTML 渲染為 PDF 文檔,從而創建專業級報告。

如何在 C# 中向 DataTable 添加行?

要在 C# 中向 DataTable 添加行,創建一個新的 DataRow 實例,使用數據填充它,然後將它添加到 DataTable 的 Rows 集合。可以使用循環重複此過程來添加多行。

什麼是 LINQ,它如何用於 DataTables?

LINQ(語言集成查詢)是 C# 中強大的查詢工具,可對來自包括 DataTables 在內的各種來源的數據進行篩選、排序和操作,以簡化數據操作。

如何使用 DataView 過濾和排序 DataTable?

DataView 提供了一種方便的方法來創建 DataTable 的篩選或排序視圖。通過設置 RowFilter 和 Sort 屬性,您可以控制數據的顯示方式,這在 UI 組件中尤為有用。

如何安裝導出 DataTables 為 PDF 的必要庫?

要安裝導出 DataTables 為 PDF 的 IronPDF 庫,請使用 Visual Studio 中的套件管理控制台並執行命令:Install-Package IronPDF

Jacob Mellor, Team Iron 首席技術官
首席技術官

Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。

Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.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