.NET幫助 C# DataTable(開發者的工作原理教程) Jacob Mellor 更新:6月 22, 2025 下載 IronPDF NuGet 下載 DLL 下載 Windows 安裝程式 開始免費試用 法學碩士副本 法學碩士副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在雙子座打開 請向 Gemini 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 歡迎來到此 C# DataTables 教學。 DataTable 是 .NET Framework 提供的功能強大的資料結構,可讓您以表格格式儲存、處理及查詢資料。 在本教程中,我們將探討 C# 中 DataTables 的基礎知識,包括建立和修改 DataTables、新增欄和行、查詢資料,以及使用 DataView 進行篩選和排序。 本教學結束時,您將充分了解如何在 C# 應用程式中使用 DataTables 。 讓我們開始吧 建立 DataTable 要在 C# 中建立 DataTable ,您首先需要匯入 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 資料表方法 新增欄位 建立 DataTable 後,您就可以開始新增欄位。 若要新增欄位,您首先需要建立 DataColumn 類的實體,並設定其屬性,例如 ColumnName 和 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); 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 在上述程式碼中,我們新增了三行資料。 存取資料 您可以透過遍歷 Rows 和 Columns 集合來存取儲存在 DataTable 中的資料。 以下是如何在控制台中顯示 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 物件中的值來修改 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; } 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 刪除行 您可以透過呼叫 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 } 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 上呼叫 Delete 只會標記刪除該行。 您需要在 DataTable 上呼叫 AcceptChanges 方法,以永久移除已刪除的行。 管理多個表格 在某些情況下,您可能需要同時處理多個資料表。 您可以建立一個資料集變數來儲存數個 DataTable 物件,並管理它們之間的關係。 使用 LINQ 查詢資料 LINQ(語言整合查詢)是 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:排序和篩選 DataView 是 System.Data 命名空間提供的另一個有用的類別,可讓您建立 DataTable 的排序或篩選檢視。 當您需要在 UI 控件(如 DataGridView )中顯示資料時,這尤其有用。 我們也可以進行資料綁定,從 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"]); } 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 接下來,建立一個輔助方法,將 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(); } 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 ExportDataTableToPdf 方法會從 HTML 表格建立 DataTable 並將其儲存至 PDF 檔案。 最後,使用適當的參數呼叫 ExportDataTableToPdf 方法來匯出您的 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 這將建立一個名為"Employees.pdf"的 PDF 檔案,其中包含表格格式的 DataTable 內容。 結論 在本教程中,您已學習了 C# 中 DataTable 的基本知識,以及如何使用 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 中的資料匯出至 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 立即與工程團隊聊天 首席技术官 Jacob Mellor 是 Iron Software 的首席技術官,作為 C# PDF 技術的先鋒工程師。作為 Iron Software 核心代碼的原作者,他自開始以來塑造了公司產品架構,與 CEO Cameron Rimington 一起將其轉變為一家擁有超過 50 名員工的公司,為 NASA、特斯拉 和 全世界政府機構服務。Jacob 持有曼徹斯特大學土木工程一級榮譽学士工程學位(BEng) (1998-2001)。他於 1999 年在倫敦開設了他的第一家軟件公司,並於 2005 年製作了他的首個 .NET 組件,專注於解決 Microsoft 生態系統內的複雜問題。他的旗艦產品 IronPDF & Iron Suite .NET 庫在全球 NuGet 被安裝超過 3000 萬次,其基礎代碼繼續為世界各地的開發工具提供動力。擁有 25 年的商業經驗和 41 年的編碼專業知識,Jacob 仍專注於推動企業級 C#、Java 及 Python PDF 技術的創新,同時指導新一代技術領袖。 相關文章 更新12月 11, 2025 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多 更新9月 4, 2025 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新9月 4, 2025 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 安裝 NuGet Powershell(開發者的工作原理教程)如何在C#中使用.NET Fiddle
更新12月 11, 2025 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多