Passer au contenu du pied de page
UTILISATION D'IRONXL

Exporter un tableau de données Excel en C# | Convertir des données Excel

L'exportation de données Excel vers un DataTable vous donne un accès structuré en mémoire au contenu de la feuille de calcul qui fonctionne naturellement avec les bases de données, les contrôles d'interface utilisateur et les requêtes LINQ. L'opération inverse – écrire un DataTable dans un fichier Excel – est tout aussi importante pour la génération de rapports et les flux de travail de stockage de données. IronXL gère les deux sens en .NET pur, sans dépendance à Microsoft Office ni configuration d'interopérabilité COM.

Installez IronXL avant d'exécuter les exemples ci-dessous :

Install-Package IronXL
dotnet add package IronXL
Install-Package IronXL
dotnet add package IronXL
SHELL

Une fois installés, les types WorkBook et WorkSheet exposent des méthodes ToDataTable et ToDataSet qui correspondent directement aux structures System.Data. Vous pouvez également inverser le processus en réécrivant les valeurs DataRow dans une feuille de calcul et en enregistrant le fichier au format XLSX ou XLS.

Comment convertir une feuille de calcul entière en un tableau de données ?

La méthode ToDataTable convertit une feuille de calcul entière -- ou une plage nommée -- en un System.Data.DataTable. Passez true pour traiter la première ligne comme des en-têtes de colonne, afin que les noms de colonnes du tableau résultant correspondent exactement aux en-têtes de votre feuille de calcul.

using IronXL;
using System.Data;

// Load the workbook from disk
WorkBook workbook = WorkBook.Load("customers.xlsx");

// Grab the default (first) worksheet
WorkSheet worksheet = workbook.DefaultWorkSheet;

// Convert the entire sheet; first row becomes column headers
DataTable dataTable = worksheet.ToDataTable(true);

// Iterate every row and print each cell value
foreach (DataRow row in dataTable.Rows)
{
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        Console.Write(row[i] + "\t");
    }
    Console.WriteLine();
}
using IronXL;
using System.Data;

// Load the workbook from disk
WorkBook workbook = WorkBook.Load("customers.xlsx");

// Grab the default (first) worksheet
WorkSheet worksheet = workbook.DefaultWorkSheet;

// Convert the entire sheet; first row becomes column headers
DataTable dataTable = worksheet.ToDataTable(true);

// Iterate every row and print each cell value
foreach (DataRow row in dataTable.Rows)
{
    for (int i = 0; i < dataTable.Columns.Count; i++)
    {
        Console.Write(row[i] + "\t");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Que fait le code ?

WorkBook.Load lit le fichier XLSX sans aucune automatisation Office. worksheet.ToDataTable(true) itère chaque cellule de la feuille et la mappe à un DataRow, en utilisant la première ligne comme noms DataColumn. L'objet DataTable résultant est un objet System.Data standard -- vous pouvez le lier à un DataGridView, le passer à un SqlBulkCopy, ou exécuter des requêtes LINQ directement dessus.

L'appel ToDataTable prend en charge les formats XLS et XLSX, le même code fonctionne donc pour les feuilles de calcul héritées sans modification. Consultez la documentation IronXL DataTable et DataSet pour obtenir la référence complète de l'API.

Comment exporter une plage de cellules spécifique vers un DataTable ?

Lorsqu'une feuille de calcul contient plusieurs zones de données, ou lorsque vous n'avez besoin que d'un sous-ensemble de lignes et de colonnes, vous pouvez exporter une plage de cellules spécifique au lieu de la feuille entière. Cette approche est plus efficace pour les fichiers volumineux car IronXL ne traite que les cellules sélectionnées.

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.Load("financial_report.xlsx");

// Access a named worksheet
WorkSheet worksheet = workbook.GetWorkSheet("Summary");

// Select only the region A1:D20 and convert it
DataTable dt = worksheet["A1:D20"].ToDataTable(true);

Console.WriteLine($"Rows: {dt.Rows.Count}, Columns: {dt.Columns.Count}");

foreach (DataRow row in dt.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write(item + "\t");
    }
    Console.WriteLine();
}
using IronXL;
using System.Data;

WorkBook workbook = WorkBook.Load("financial_report.xlsx");

// Access a named worksheet
WorkSheet worksheet = workbook.GetWorkSheet("Summary");

// Select only the region A1:D20 and convert it
DataTable dt = worksheet["A1:D20"].ToDataTable(true);

Console.WriteLine($"Rows: {dt.Rows.Count}, Columns: {dt.Columns.Count}");

foreach (DataRow row in dt.Rows)
{
    foreach (var item in row.ItemArray)
    {
        Console.Write(item + "\t");
    }
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Pourquoi le choix de la gamme est important

La syntaxe entre crochets worksheet["A1:D20"] renvoie un objet IronXl.Range. L'appel de ToDataTable sur cette plage limite le traitement à exactement ces cellules, ce qui signifie une exécution plus rapide et une empreinte mémoire plus petite lorsque le fichier source contient des dizaines de milliers de lignes.

Vous pouvez également spécifier des plages nommées ou construire la chaîne de plage dynamiquement au moment de l'exécution -- par exemple, $"A1:D{lastRow}" -- ce qui rend l'approche flexible pour les exportations de données de longueur variable. La documentation de référence de l'API de la classe Range recense toutes les méthodes de sélection et d'interrogation disponibles.

Comment convertir un classeur à plusieurs feuilles en un jeu de données ?

Les classeurs comportant plusieurs feuilles s'adaptent naturellement à System.Data.DataSet, où chaque feuille devient un DataTable distinct. La méthode ToDataSet effectue cette conversion en un seul appel.

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.Load("multi_sheet.xlsx");

// Each worksheet becomes a DataTable inside the DataSet
DataSet dataSet = workbook.ToDataSet();

foreach (DataTable table in dataSet.Tables)
{
    Console.WriteLine($"Sheet: {table.TableName}");
    Console.WriteLine($"Rows:  {table.Rows.Count}");
    Console.WriteLine();
}
using IronXL;
using System.Data;

WorkBook workbook = WorkBook.Load("multi_sheet.xlsx");

// Each worksheet becomes a DataTable inside the DataSet
DataSet dataSet = workbook.ToDataSet();

foreach (DataTable table in dataSet.Tables)
{
    Console.WriteLine($"Sheet: {table.TableName}");
    Console.WriteLine($"Rows:  {table.Rows.Count}");
    Console.WriteLine();
}
$vbLabelText   $csharpLabel

Accéder aux feuilles par nom

Chaque DataTable dans le DataSet renvoyé utilise le nom de la feuille de calcul d'origine comme sa propriété TableName, vous pouvez donc récupérer une feuille spécifique avec dataSet.Tables["Summary"] plutôt que d'itérer sur la collection. Cela simplifie la création d'une logique de reporting multi-feuilles ou la combinaison de données provenant de plusieurs feuilles de calcul avant l'écriture des résultats dans une base de données.

Pour découvrir d'autres façons de travailler avec plusieurs feuilles et de naviguer dans la structure du classeur, consultez la section sur l'ouverture et la gestion des feuilles de calcul Excel .

Comment exporter un DataTable vers un fichier Excel ?

L'importation dans DataTable ne représente que la moitié de l'histoire. Lorsque vous devez réécrire des données structurées sous forme de feuille de calcul (pour des rapports, des téléchargements ou l'archivage), vous créez un nouveau classeur, remplissez les cellules à partir de DataTable et enregistrez.

using IronXL;
using System.Data;

// Build a sample DataTable
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ProductID", typeof(int)));
dt.Columns.Add(new DataColumn("ProductName", typeof(string)));
dt.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));
dt.Rows.Add(1, "Widget Pro", 29.99m);
dt.Rows.Add(2, "Gadget Max", 49.99m);
dt.Rows.Add(3, "Sensor Kit", 14.50m);

// Create a new workbook and worksheet
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");

// Write column headers from DataTable.Columns
for (int col = 0; col < dt.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        worksheet.SetCellValue(row + 1, col, dt.Rows[row][col]);
    }
}

// Save as XLSX
workbook.SaveAs("products_export.xlsx");
Console.WriteLine("Export complete.");
using IronXL;
using System.Data;

// Build a sample DataTable
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ProductID", typeof(int)));
dt.Columns.Add(new DataColumn("ProductName", typeof(string)));
dt.Columns.Add(new DataColumn("UnitPrice", typeof(decimal)));
dt.Rows.Add(1, "Widget Pro", 29.99m);
dt.Rows.Add(2, "Gadget Max", 49.99m);
dt.Rows.Add(3, "Sensor Kit", 14.50m);

// Create a new workbook and worksheet
WorkBook workbook = WorkBook.Create();
WorkSheet worksheet = workbook.CreateWorkSheet("Products");

// Write column headers from DataTable.Columns
for (int col = 0; col < dt.Columns.Count; col++)
{
    worksheet.SetCellValue(0, col, dt.Columns[col].ColumnName);
}

// Write data rows
for (int row = 0; row < dt.Rows.Count; row++)
{
    for (int col = 0; col < dt.Columns.Count; col++)
    {
        worksheet.SetCellValue(row + 1, col, dt.Rows[row][col]);
    }
}

// Save as XLSX
workbook.SaveAs("products_export.xlsx");
Console.WriteLine("Export complete.");
$vbLabelText   $csharpLabel

Comment fonctionne la boucle d'écriture cellulaire

SetCellValue(rowIndex, columnIndex, value) accepte les valeurs object, vous pouvez donc passer les noms de colonnes pour la ligne d'en-tête et les valeurs brutes des cellules pour les lignes de données sans aucune conversion de type. Le décalage de ligne de row + 1 réserve la ligne 0 pour les en-têtes. Le fichier XLSX résultant est une feuille de calcul parfaitement valide – sans espaces réservés ni fichiers temporaires.

Pour les DataTables plus volumineuses, envisagez d'appliquer un dimensionnement automatique des colonnes après l'écriture des données afin que le contenu s'affiche correctement sans mise en forme manuelle.

Comment lier un DataTable à un DataGridView ?

L'une des raisons les plus courantes d'exporter une feuille Excel vers un DataTable est de l'afficher dans un formulaire Windows Forms DataGridView. Une fois que vous avez un DataTable, la liaison se fait sur une seule ligne de code.

using IronXL;
using System.Data;
using System.Windows.Forms;

WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;
DataTable dataTable = worksheet.ToDataTable(true);

// Bind directly to a DataGridView
dataGridViewInventory.DataSource = dataTable;
using IronXL;
using System.Data;
using System.Windows.Forms;

WorkBook workbook = WorkBook.Load("inventory.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;
DataTable dataTable = worksheet.ToDataTable(true);

// Bind directly to a DataGridView
dataGridViewInventory.DataSource = dataTable;
$vbLabelText   $csharpLabel

Que se passe-t-il au moment de la reliure ?

La configuration de DataSource déclenche DataGridView pour lire les noms de colonnes et les données de lignes à partir de DataTable. Chaque DataColumn devient une colonne de la grille, et chaque DataRow devient une ligne visible. Vous pouvez appliquer des comportements de tri, de filtrage et de sélection via les commandes intégrées de la grille sans aucun code supplémentaire.

Ce modèle fonctionne tout aussi bien avec WPF DataGrid, ASP.NET GridView et toute autre infrastructure de liaison de données .NET . Pour obtenir un guide étape par étape, consultez la procédure d'exportation d'un DataGridView vers Excel dans le sens inverse.

Comment utiliser les requêtes LINQ sur une DataTable exportée ?

Après avoir converti une feuille de calcul en DataTable, vous pouvez exécuter des requêtes LINQ à l'aide de la méthode d'extension AsEnumerable(), qui transforme chaque DataRow en un élément interrogeable.

using IronXL;
using System.Data;
using System.Linq;

WorkBook workbook = WorkBook.Load("sales.xlsx");
DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true);

// Filter rows where the "Revenue" column exceeds 10000
var highRevenue = dt.AsEnumerable()
    .Where(row => row.Field<double>("Revenue") > 10000)
    .OrderByDescending(row => row.Field<double>("Revenue"))
    .ToList();

Console.WriteLine($"High-revenue records: {highRevenue.Count}");
foreach (var row in highRevenue)
{
    Console.WriteLine($"{row["Product"]}: {row["Revenue"]:C}");
}
using IronXL;
using System.Data;
using System.Linq;

WorkBook workbook = WorkBook.Load("sales.xlsx");
DataTable dt = workbook.DefaultWorkSheet.ToDataTable(true);

// Filter rows where the "Revenue" column exceeds 10000
var highRevenue = dt.AsEnumerable()
    .Where(row => row.Field<double>("Revenue") > 10000)
    .OrderByDescending(row => row.Field<double>("Revenue"))
    .ToList();

Console.WriteLine($"High-revenue records: {highRevenue.Count}");
foreach (var row in highRevenue)
{
    Console.WriteLine($"{row["Product"]}: {row["Revenue"]:C}");
}
$vbLabelText   $csharpLabel

Pourquoi LINQ est utile sur DataTable

Les requêtes LINQ vous offrent une manière lisible et fortement typée de filtrer, trier, regrouper et projeter des données à partir d'une feuille de calcul convertie. row.Field<t>(columnName) gère la conversion de type proprement, en lançant une InvalidCastException si une valeur ne peut pas être convertie plutôt que de renvoyer un null silencieux. Cela permet de détecter plus facilement et rapidement les problèmes de qualité des données.

Combinez cette approche avec l'exportation par plage de la section précédente pour interroger des régions spécifiques des feuilles plutôt que des feuilles de calcul complètes, ce qui permet de limiter l'utilisation de la mémoire pour les fichiers volumineux.

Comment gérez-vous les cellules nulles et vides lors de l'exportation ?

Les feuilles de calcul Excel comportent souvent des lacunes : des cellules vides, des zones fusionnées ou du texte d'espace réservé. IronXL mappe les cellules vides à DBNull.Value dans le DataTable exporté, correspondant au comportement standard d'ADO .NET afin que votre code de gestion des valeurs nulles existant fonctionne sans modification.

Comment IronXL associe les états des cellules Excel aux valeurs des DataTables
État de la cellule Excel valeur DataTable Remarques
Valeur du texte Chaîne Retourné tel quel
valeur numérique Double ou décimal Cela dépend du format de la cellule
Valeur de la date Date et heure Extrait du numéro de série
valeur booléenne Booléen VRAI/FAUX dans Excel
Cellule vide DBNull.Value .NET standard null
Cellule de formule Résultat calculé IronXL évalue d'abord la formule.

Lors de la réécriture d'un DataTable dans Excel, les champs DBNull.Value produisent des cellules vides, préservant ainsi la fidélité de l'aller-retour. Si vous avez besoin d'une chaîne par défaut pour les champs nuls, remplacez DBNull.Value par votre espace réservé avant d'appeler SetCellValue.

Pour plus d'informations sur la préparation des données, la documentation de la classe DataTable de Microsoft couvre en détail la gestion des valeurs nulles, la gestion des contraintes et les états des lignes.

Comment économiser de la mémoire lors de l'exportation de feuilles de calcul volumineuses ?

Pour les feuilles de calcul comportant plusieurs milliers de lignes, l'exportation de la feuille entière en une seule fois alloue simultanément toutes les données en mémoire. Deux modèles IronXL réduisent l'utilisation maximale de la mémoire :

  • Exportation de plage : Utilisez worksheet["A1:D5000"].ToDataTable(true) pour traiter une région délimitée au lieu de la feuille entière.
  • Traitement par lots : Calculez la dernière ligne utilisée avec worksheet.RowCount, puis parcourez des plages de taille fixe -- par exemple 1 000 lignes à la fois -- et traitez chaque lot avant de passer au suivant.

Les propriétés worksheet.RowCount et worksheet.ColumnCount vous permettent de créer des chaînes de plage dynamiques sans coder en dur les dimensions :

using IronXL;
using System.Data;

WorkBook workbook = WorkBook.Load("large_dataset.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;

int batchSize = 1000;
int totalRows = worksheet.RowCount;

for (int startRow = 1; startRow <= totalRows; startRow += batchSize)
{
    int endRow = Math.Min(startRow + batchSize - 1, totalRows);
    string rangeAddress = $"A{startRow}:Z{endRow}";

    DataTable batch = worksheet[rangeAddress].ToDataTable(false);
    // Process each batch -- write to database, transform, etc.
    Console.WriteLine($"Processed rows {startRow} to {endRow}");
}
using IronXL;
using System.Data;

WorkBook workbook = WorkBook.Load("large_dataset.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;

int batchSize = 1000;
int totalRows = worksheet.RowCount;

for (int startRow = 1; startRow <= totalRows; startRow += batchSize)
{
    int endRow = Math.Min(startRow + batchSize - 1, totalRows);
    string rangeAddress = $"A{startRow}:Z{endRow}";

    DataTable batch = worksheet[rangeAddress].ToDataTable(false);
    // Process each batch -- write to database, transform, etc.
    Console.WriteLine($"Processed rows {startRow} to {endRow}");
}
$vbLabelText   $csharpLabel

Ce modèle est particulièrement pertinent pour la lecture de fichiers Excel volumineux en C#, où des contraintes de mémoire s'appliquent.

Comment enregistrer un DataTable dans une base de données ?

Une fois que vous avez un DataTable, l'insérer dans SQL Server via SqlBulkCopy est le chemin le plus rapide pour les grands ensembles de données. SqlBulkCopy accepte un DataTable directement et traite les lignes par lots sans construire d'instructions INSERT individuelles.

using IronXL;
using System.Data;
using Microsoft.Data.SqlClient;

WorkBook workbook = WorkBook.Load("orders.xlsx");
DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true);

string connectionString = "Server=.;Database=OrdersDB;Trusted_Connection=True;";

using SqlConnection connection = new(connectionString);
connection.Open();

using SqlBulkCopy bulkCopy = new(connection);
bulkCopy.DestinationTableName = "dbo.Orders";
bulkCopy.BatchSize = 500;
bulkCopy.BulkCopyTimeout = 60;

// Map DataTable columns to database columns
bulkCopy.ColumnMappings.Add("OrderID", "OrderID");
bulkCopy.ColumnMappings.Add("CustomerName", "CustomerName");
bulkCopy.ColumnMappings.Add("TotalAmount", "TotalAmount");

bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Bulk insert complete.");
using IronXL;
using System.Data;
using Microsoft.Data.SqlClient;

WorkBook workbook = WorkBook.Load("orders.xlsx");
DataTable dataTable = workbook.DefaultWorkSheet.ToDataTable(true);

string connectionString = "Server=.;Database=OrdersDB;Trusted_Connection=True;";

using SqlConnection connection = new(connectionString);
connection.Open();

using SqlBulkCopy bulkCopy = new(connection);
bulkCopy.DestinationTableName = "dbo.Orders";
bulkCopy.BatchSize = 500;
bulkCopy.BulkCopyTimeout = 60;

// Map DataTable columns to database columns
bulkCopy.ColumnMappings.Add("OrderID", "OrderID");
bulkCopy.ColumnMappings.Add("CustomerName", "CustomerName");
bulkCopy.ColumnMappings.Add("TotalAmount", "TotalAmount");

bulkCopy.WriteToServer(dataTable);
Console.WriteLine("Bulk insert complete.");
$vbLabelText   $csharpLabel

Considérations relatives au mappage des colonnes

La collection ColumnMappings fait correspondre les noms de colonnes DataTable aux noms de colonnes de la base de données. Si les deux noms sont identiques, vous pouvez omettre les correspondances individuelles et SqlBulkCopy fera automatiquement correspondre par nom. Les correspondances explicites sont plus sûres lorsque l'ordre des colonnes de la feuille de calcul diffère du schéma de la base de données.

Pour en savoir plus sur la combinaison IronXL avec les flux de travail de base de données, le guide d'importation Excel C# couvre des scénarios d'importation supplémentaires, y compris la validation avant l'insertion.

Pour les projets basés sur Entity Framework, convertissez d'abord vos lignes DataTable en objets de modèle typés, puis utilisez DbContext.BulkInsert d'une bibliothèque comme EFCore.BulkExtensions pour l'insertion par lots compatible ORM. La documentation de Microsoft sur SqlBulkCopy explique en détail les options de traitement par lots et la prise en charge des transactions.

Quelles sont vos prochaines étapes ?

Vous disposez désormais d'une boîte à outils complète pour transférer des données entre Excel et DataTable dans les deux sens grâce à IronXL:

  • Convertissez une feuille de calcul complète avec worksheet.ToDataTable(true) pour les exportations prenant en compte l'en-tête
  • Exportez une plage de cellules spécifique avec la syntaxe worksheet["A1:D20"].ToDataTable(true)
  • Convertissez les classeurs à plusieurs feuilles avec workbook.ToDataSet() pour un accès complet DataSet
  • Réécrivez le contenu de DataTable dans XLSX en itérant les valeurs de DataRow avec SetCellValue
  • Liez le DataTable aux contrôles d'interface utilisateur tels que DataGridView avec une seule affectation DataSource
  • Alimentez SqlBulkCopy directement à partir d'un DataTable pour des insertions de base de données à haut débit

Pour approfondir vos compétences IronXL , explorez ces sujets connexes :

Commencez par une licence d'essai gratuite IronXL pour exécuter ces exemples dans vos propres projets. Lorsque vous serez prêt à déployer votre solution, achetez une licence de production ou contactez notre équipe pour obtenir des conseils sur les licences.

Commencez avec IronXL maintenant.
green arrow pointer

Questions Fréquemment Posées

Comment exporter des données Excel vers un DataTable en C# en utilisant IronXL?

Vous pouvez exporter des données Excel vers un DataTable en C# à l'aide IronXL en chargeant le fichier Excel dans IronXL, en sélectionnant la feuille de calcul ou la plage, puis en utilisant la méthode ExportToDataTable pour convertir les données en un objet DataTable.

Quels sont les avantages de convertir des données Excel en DataTable ?

La conversion de données Excel en DataTable fournit des données structurées, idéales pour les opérations de base de données, la liaison de données aux contrôles d'interface utilisateur et l'intégration .NET . Elle facilite également la manipulation et le traitement des données dans les applications C#.

IronXL peut-il gérer à la fois l'importation et l'exportation de données entre Excel et DataTable ?

Oui, IronXL gère efficacement l'importation de données d'Excel vers une DataTable et l'exportation de données d'une DataTable vers Excel, ce qui en fait un outil polyvalent pour la gestion des échanges de données dans les applications C#.

Est-il possible de convertir des plages spécifiques d'une feuille Excel en un DataTable à l'aide IronXL?

Oui, IronXL vous permet de sélectionner des plages spécifiques dans une feuille Excel et de les convertir en DataTable, ce qui vous offre une grande flexibilité dans la manipulation et l'extraction des données.

Ai-je besoin de Microsoft Office installé pour utiliser IronXL pour la conversion de données Excel ?

Non, vous n'avez pas besoin de Microsoft Office installé sur votre ordinateur pour utiliser IronXL afin de convertir des données Excel en DataTable et inversement. IronXL fonctionne indépendamment de Microsoft Office.

Quels types de données peuvent être convertis d'Excel en DataTable à l'aide IronXL?

IronXL peut convertir différents types de données Excel, notamment des nombres, du texte, des dates et des formules, au format DataTable, en préservant l'intégrité et la structure des données.

IronXL peut-il exporter un DataTable vers un fichier Excel ?

Oui, IronXL peut exporter un DataTable vers un fichier Excel, ce qui vous permet de générer des rapports ou de créer des solutions de stockage de données directement depuis vos applications C#.

Jordi Bardia
Ingénieur logiciel
Jordi est le plus compétent en Python, C# et C++, et lorsqu'il ne met pas à profit ses compétences chez Iron Software, il programme des jeux. Partageant les responsabilités des tests de produit, du développement de produit et de la recherche, Jordi apporte une immense valeur à l'amé...
Lire la suite

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi