在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
歡迎來到這個 C# DataTables 教程。 DataTable
是由 .NET 框架提供的一種強大數據結構,它允許您以表格格式存儲、操作和查詢數據。 在本教程中,我們將探索 C# 中 DataTables 的基礎知識,包括創建和修改DataTables
、添加列和行、查詢數據,以及使用DataView
進行篩選和排序。
在本教程結束時,您將對如何在 C# 應用程式中使用 DataTables
有一個良好的理解。 讓我們開始吧!
要在 C# 中創建一個 DataTable
,首先需要導入 System.Data
命名空間。 此命名空間包含多種與資料操作相關的類別和方法,包括DataTable
類別。
using System.Data;
using System.Data;
Imports System.Data
接下來,您可以建立一個DataTable
類別的實例。 最簡單的方法是使用默認構造函數,如下所示:
DataTable dt = new DataTable();
DataTable dt = new DataTable();
Dim dt As New DataTable()
您還可以通過將字串參數傳遞給建構函式來建立具有特定名稱的DataTable
:
DataTable dt = new DataTable("Employees");
DataTable dt = new DataTable("Employees");
Dim dt As New DataTable("Employees")
一旦創建了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)
您可以在資料表中新增多個像是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)
您還可以使用相同的方法在迴圈中一次添加多個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
在上述程式碼中,我們新增了三筆資料列。
您可以通過迭代 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();
}
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
您可以通過更新DataRow
對象中的值來修改DataTable
中的數據。 以下是一個更新特定員工年齡的範例:
DataRow employeeRow = dt.Rows.Find(1); // Find the row with the specified primary key
if (employeeRow != null)
{
employeeRow ["Age"] = 35;
}
DataRow employeeRow = dt.Rows.Find(1); // Find the row with the specified primary key
if (employeeRow != null)
{
employeeRow ["Age"] = 35;
}
Dim employeeRow As DataRow = dt.Rows.Find(1) ' Find the row with the specified primary key
If employeeRow IsNot Nothing Then
employeeRow ("Age") = 35
End If
您可以通過在 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
請注意,對 DataRow
呼叫 Delete
僅標記該行待刪除。 您需要在DataTable
上調用AcceptChanges
方法以永久刪除已刪除的行。
在某些情況下,您可能需要同時處理多個資料表。 您可以創建一個數據集變數來存儲多個 DataTable 對象並管理它們之間的關係。
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"]);
}
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
DataView
是由 System.Data
命名空間提供的另一個有用類別,允許您創建排序或篩選的 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"]);
}
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
IronPDF 是一個強大的 HTML 到 PDF 轉換器,具備用戶友好的 PDF 操作功能,使開發人員能夠在 .NET 應用程式內創建、閱讀和編輯 PDF 文檔。
using IronPdf;
class Program
{
static void Main(string [] args)
{
var renderer = new ChromePdfRenderer();
// 1. 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");
// 2. 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");
// 3. 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();
// 1. 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");
// 2. 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");
// 3. 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()
' 1. 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")
' 2. 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")
' 3. 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
在本節中,我們將學習如何使用 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
接下來,建立一個輔助方法,將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
現在,您可以使用 IronPDF 提供的HtmlToPdf 類別
來渲染 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
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)
這將會創建一個名為 "Employees.pdf" 的 PDF 文件,其中包含以表格格式顯示的 DataTable
內容。
在本教程中,您已學習 C# 中 DataTables 的基本知識,以及如何使用 IronPDF 庫將DataTable
導出為 PDF 文件。 通過整合主鍵欄位、數據集變量和數據視圖進行篩選和排序,您將對您的數據有更大的控制和靈活性。 現在,您應該對DataTables有很好的了解,以及如何使用IronPDF結合DataTables在C#應用程式中創建專業外觀的PDF報告。
IronPDF 提供免費試用其功能,讓您在購買前探索其功能。