
C# DataTable (Comment ça fonctionne pour les développeurs tutoriel)
Bienvenue dans ce tutoriel sur les DataTables en C#. Un DataTable est une structure de données puissante fournie par le framework .NET, qui vous permet de stocker, manipuler et interroger des données sous un format tabulaire. Dans ce tutoriel, nous explorerons les bases de DataTables en C#, y compris la création et la modification de DataTables, l'ajout de colonnes et de lignes, l'interrogation des données et l'utilisation de DataView pour filtrer et trier.
À la fin de ce tutoriel, vous aurez une bonne compréhension de l'utilisation de DataTables dans vos applications C#. Commençons !
Création d'un DataTable
Pour créer un DataTable en C#, vous devez d'abord importer l'espace de noms System.Data. Cet espace de noms contient diverses classes et méthodes liées à la manipulation de données, y compris la classe DataTable.
using System.Data;Imports System.DataEnsuite, vous pouvez créer une instance de la classe DataTable. Le moyen le plus simple de le faire est en utilisant le constructeur par défaut, comme ceci :
DataTable dt = new DataTable();Dim dt As New DataTable()Vous pouvez également créer un DataTable avec un nom spécifique en passant un paramètre chaîne au constructeur :
DataTable dt = new DataTable("Employees");Dim dt As New DataTable("Employees")Méthodes du DataTable
Ajout de colonnes
Une fois que vous avez créé un DataTable, vous pouvez commencer à y ajouter des colonnes. Pour ajouter une colonne, vous devez d'abord créer une instance de la classe DataColumn et définir ses propriétés, telles que ColumnName et DataType.
Voici un exemple de la manière d'ajouter trois colonnes à un 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);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)Vous pouvez ajouter plusieurs colonnes comme la colonne Id dans la table de données.
Ajout de lignes de données
Après avoir défini les colonnes, vous pouvez commencer à ajouter des lignes au DataTable. Pour ajouter une ligne, vous devez créer une nouvelle instance de la classe DataRow et remplir ses champs avec les données requises.
Voici un exemple de comment ajouter une nouvelle ligne à un DataTable :
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)Vous pouvez également ajouter plusieurs lignes DataTable à la fois en utilisant la même méthode dans une boucle.
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 iDans le code ci-dessus, nous avons ajouté trois lignes de données.
Accès aux données
Vous pouvez accéder aux données stockées dans un DataTable en parcourant ses collections Rows et Columns. Voici un exemple de comment afficher le contenu d'un DataTable dans la console :
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 rowModification des données
Vous pouvez modifier les données dans un DataTable en mettant à jour les valeurs dans ses objets DataRow. Voici un exemple de la manière de mettre à jour l'âge d'un employé spécifique :
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 IfSuppression de lignes
Vous pouvez supprimer une ligne d'un DataTable en appelant la méthode Delete sur un objet DataRow :
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 IfGardez à l'esprit qu'appeler Delete sur un DataRow ne fait que marquer la ligne pour suppression. Vous devez appeler la méthode AcceptChanges sur le DataTable pour supprimer définitivement les lignes marquées.
Gestion de plusieurs tables
Dans certains cas, vous pourriez avoir besoin de travailler avec plusieurs tableaux de données simultanément. Vous pouvez créer une variable ensemble de données pour stocker plusieurs objets DataTable et gérer les relations entre eux.
Interrogation des données avec LINQ
LINQ (Language Integrated Query) est une fonctionnalité puissante en C# qui vous permet d'interroger les données provenant de diverses sources de données, y compris les objets DataTable. Pour utiliser LINQ avec les DataTables, vous devez importer l'espace de noms System.Linq. Voici un exemple de la manière de filtrer les employés de plus de 25 ans en utilisant LINQ :
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 rowDataView : Tri et filtrage
DataView est une autre classe utile fournie par l'espace de noms System.Data qui vous permet de créer une vue triée ou filtrée d'un DataTable. Ceci est particulièrement utile lorsque vous devez afficher les données dans un contrôle d'interface utilisateur comme un DataGridView. Nous pouvons également effectuer une liaison de données pour ajouter des données au contrôle DataGridView à partir d'un DataTable.
Voici un exemple de la manière de créer un DataView pour filtrer et trier les employés selon leur âge :
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 rowViewExportation du DataTable en PDF avec IronPDF
IronPDF est un puissant convertisseur HTML en PDF, doté de fonctionnalités de manipulation de PDF conviviales, permettant aux développeurs de créer, lire et éditer des documents PDF au sein des applications .NET.
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 ClassDans cette section, nous apprendrons comment exporter un DataTable vers un document PDF en utilisant IronPDF.
Tout d'abord, vous devez installer le paquet NuGet IronPDF. Ouvrez la console du Package Manager dans Visual Studio et exécutez la commande suivante :
Une fois le paquet installé, vous pouvez commencer par importer les espaces de noms nécessaires dans votre code :
using IronPdf;
using System.IO;Imports IronPdf
Imports System.IOEnsuite, créez une méthode d'assistance qui convertit le DataTable en un tableau HTML, car IronPDF utilise l'HTML pour rendre le contenu dans les documents 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 Shared Function ConvertDataTableToHtml(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
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
htmlBuilder.AppendLine("</tr>")
Next
htmlBuilder.AppendLine("</table>")
Return htmlBuilder.ToString()
End FunctionMaintenant, vous pouvez utiliser le HtmlToPdf class fourni par IronPDF pour rendre la table HTML et l'enregistrer sous forme de fichier 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 Shared Sub ExportDataTableToPdf(dt As DataTable, outputPath As String)
' Convert DataTable to HTML
Dim htmlTable As String = ConvertDataTableToHtml(dt)
' Create a new HTML to PDF renderer
Dim renderer As 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 SubLa méthode ExportDataTableToPdf crée un DataTable à partir de la table HTML et l'enregistre dans le fichier PDF.
Enfin, appelez la méthode ExportDataTableToPdf avec les paramètres appropriés pour exporter votre DataTable :
string pdfOutputPath = "Employees.pdf";
ExportDataTableToPdf(dt, pdfOutputPath);Dim pdfOutputPath As String = "Employees.pdf"
ExportDataTableToPdf(dt, pdfOutputPath)Cela créera un fichier PDF nommé "Employees.pdf" contenant le contenu de votre DataTable sous un format tabulaire.

Conclusion
Dans ce tutoriel, vous avez appris les bases des DataTables en C# et comment exporter un DataTable vers un document PDF en utilisant la bibliothèque IronPDF. En incorporant la colonne clé primaire, les variables d'ensemble de données, et le DataView pour le filtrage et le tri, vous aurez plus de contrôle et de flexibilité sur vos données. Vous devriez maintenant avoir une bonne compréhension des DataTables et comment utiliser IronPDF en conjonction avec les DataTables pour créer des rapports PDF d'aspect professionnel dans vos applications C#.
IronPDF offre un essai gratuit de ses fonctionnalités, vous permettant d'explorer ses capacités avant de vous engager dans un achat.

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.
Articles connexes


