Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Willkommen zu diesem Lehrgang über C# DataTables. Eine "DataTable" ist eine leistungsfähige Datenstruktur des .NET-Frameworks, mit der Sie Daten in einem Tabellenformat speichern, bearbeiten und abfragen können. In diesem Tutorial werden wir die Grundlagen von DataTables in C# erkunden, einschließlich des Erstellens und Änderns von DataTables
, des Hinzufügens von Spalten und Zeilen, der Abfrage von Daten und der Verwendung von DataView
zum Filtern und Sortieren.
Am Ende dieses Tutorials werden Sie ein gutes Verständnis für die Verwendung von DataTables
in Ihren C#-Anwendungen haben. Fangen wir an!
Um eine DataTable
in C# zu erstellen, müssen Sie zunächst den System.Data
-Namensraum importieren. Dieser Namespace enthält verschiedene Klassen und Methoden im Zusammenhang mit der Datenmanipulation, darunter die Klasse "DataTable".
using System.Data;
using System.Data;
Imports System.Data
Als nächstes können Sie eine Instanz der Klasse DataTable
erstellen. Der einfachste Weg, dies zu tun, ist die Verwendung des Standardkonstruktors, etwa so:
DataTable dt = new DataTable();
DataTable dt = new DataTable();
Dim dt As New DataTable()
Sie können auch eine "Datentabelle" mit einem bestimmten Namen erstellen, indem Sie dem Konstruktor einen String-Parameter übergeben:
DataTable dt = new DataTable("Employees");
DataTable dt = new DataTable("Employees");
Dim dt As New DataTable("Employees")
Sobald Sie eine DataTable erstellt haben, können Sie ihr Spalten hinzufügen. Um eine Spalte hinzuzufügen, müssen Sie zunächst eine Instanz der Klasse DataColumn
erstellen und ihre Eigenschaften, wie ColumnName
und DataType
, festlegen.
Hier ein Beispiel für das Hinzufügen von drei Spalten zu einer 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)
Sie können mehrere Spalten wie die Spalte "ID" in der Datentabelle hinzufügen.
Nachdem Sie die Spalten definiert haben, können Sie damit beginnen, Zeilen in die "DataTable" einzufügen. Um eine Zeile hinzuzufügen, müssen Sie eine neue Instanz der Klasse DataRow
erstellen und die Felder mit den erforderlichen Daten füllen.
Hier ein Beispiel dafür, wie man eine neue Zeile zu einer "Datentabelle" hinzufügt:
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)
Sie können auch mehrere DataTable
-Zeilen auf einmal mit der gleichen Methode in einer Schleife hinzufügen.
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
Im obigen Code haben wir drei Datenzeilen hinzugefügt.
Sie können auf die in einer "DataTable" gespeicherten Daten zugreifen, indem Sie durch die Sammlungen "Rows" und "Columns" iterieren. Hier ein Beispiel, wie man den Inhalt einer DataTable
in der Konsole anzeigt:
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
Sie können die Daten in einer "DataTable" ändern, indem Sie die Werte in ihren "DataRow"-Objekten aktualisieren. Hier ein Beispiel, wie Sie das Alter eines bestimmten Mitarbeiters aktualisieren können:
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
Sie können eine Zeile aus einer DataTable löschen, indem Sie die Delete-Methode für ein DataRow
-Objekt aufrufen:
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
Beachten Sie, dass der Aufruf von Delete
für eine DataRow
nur die Zeile zum Löschen markiert. Sie müssen die Methode "AcceptChanges" für die Datentabelle aufrufen, um die gelöschten Zeilen dauerhaft zu entfernen.
In einigen Fällen müssen Sie vielleicht mit mehreren Datentabellen gleichzeitig arbeiten. Sie können eine Dataset-Variable erstellen, um mehrere DataTable-Objekte zu speichern und die Beziehungen zwischen ihnen zu verwalten.
LINQ (Sprache Integrierte Abfrage) ist eine leistungsstarke Funktion in C#, mit der Sie Daten aus verschiedenen Datenquellen, einschließlich DataTable
-Objekten, abfragen können. Um LINQ mit DataTables zu verwenden, müssen Sie den Namespace System.Linq
importieren. Hier ein Beispiel für das Filtern von Mitarbeitern, die älter als 25 Jahre sind, mit LINQ:
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
die Klasse "DataView" ist eine weitere nützliche Klasse aus dem Namespace "System.Data", mit der Sie eine sortierte oder gefilterte Ansicht einer "Datentabelle" erstellen können. Dies ist besonders nützlich, wenn Sie die Daten in einem UI-Steuerelement wie einem DataGridView
anzeigen müssen. Wir können auch eine Datenbindung durchführen, um dem DataGridView-Steuerelement Daten aus einer Datentabelle hinzuzufügen.
Hier ein Beispiel für die Erstellung eines DataViews zum Filtern und Sortieren der Mitarbeiter nach ihrem Alter:
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 ist eine leistungsstarke HTML zu PDF konverter mit benutzerfreundlichen PDF-Manipulationsfunktionen ermöglicht es Entwicklern, PDF-Dokumente in .NET-Anwendungen zu erstellen, zu lesen und zu bearbeiten.
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
In diesem Abschnitt lernen wir, wie man mit IronPDF eine Datentabelle in ein PDF-Dokument exportiert.
Zunächst müssen Sie das IronPDF NuGet-Paket installieren. Öffnen Sie die Paketmanager-Konsole in Visual Studio und führen Sie den folgenden Befehl aus:
Install-Package IronPdf
Sobald das Paket installiert ist, können Sie damit beginnen, die erforderlichen Namespaces in Ihren Code zu importieren:
using IronPdf;
using System.IO;
using IronPdf;
using System.IO;
Imports IronPdf
Imports System.IO
Als Nächstes erstellen Sie eine Hilfsmethode, die die DataTable in eine HTML-Tabelle umwandelt, da IronPDF HTML zum Rendern von Inhalten in PDF-Dokumenten verwendet:
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
Jetzt können Sie die htmlToPdf klasse, die von IronPDF bereitgestellt wird, um die HTML-Tabelle zu rendern und als PDF-Datei zu speichern:
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
Die Methode ExportDataTableToPdf
erstellt eine DataTable
aus der HTML-Tabelle und speichert sie in der PDF-Datei.
Rufen Sie schließlich die Methode "ExportDataTableToPdf" mit den entsprechenden Parametern auf, um Ihre "Datentabelle" zu exportieren:
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);
Dim pdfOutputPath As String = "Employees.pdf"
ExportDataTableToPdf(dt, pdfOutputPath)
Dadurch wird eine PDF-Datei mit dem Namen "Employees.pdf" erstellt, die den Inhalt Ihrer DataTable
in Tabellenform enthält.
In diesem Tutorial haben Sie die Grundlagen von DataTables in C# kennengelernt und erfahren, wie man eine DataTable
mit der IronPDF-Bibliothek in ein PDF-Dokument exportiert. Durch die Einbeziehung der Primärschlüsselspalte, der Dataset-Variablen und der DataView zum Filtern und Sortieren erhalten Sie eine größere Kontrolle und Flexibilität über Ihre Daten. Jetzt sollten Sie ein gutes Verständnis von DataTables haben und wissen, wie Sie IronPDF in Verbindung mit DataTables verwenden können, um professionell aussehende PDF-Berichte in Ihren C#-Anwendungen zu erstellen.
IronPDF bietet eine kostenloser Testso können Sie die Funktionen und Möglichkeiten des Systems erkunden, bevor Sie sich zum Kauf entschließen.
9 .NET API-Produkte für Ihre Bürodokumente