using IronXL;
using System;
using System.Linq;
// Supported for XLSX, XLS, XLSM, XLTX, CSV and TSV
WorkBook workBook = WorkBook.Load("sample.xlsx");
// Select worksheet at index 0
WorkSheet workSheet = workBook.WorkSheets[0];
// Get any existing worksheet
WorkSheet firstSheet = workBook.DefaultWorkSheet;
// Select a cell and return the converted value
int cellValue = workSheet["A2"].IntValue;
// Read from ranges of cells elegantly.
foreach (var cell in workSheet["A2:A10"])
{
Console.WriteLine("Cell {0} has value '{1}'", cell.AddressString, cell.Text);
}
// Calculate aggregate values such as Min, Max and Sum
decimal sum = workSheet["A2:A10"].Sum();
// Linq compatible
decimal max = workSheet["A2:A10"].Max(c => c.DecimalValue);
Dans ce tutoriel pour débutants, nous allons voir commentlire les fichiers CSV en unliste en C# en utilisant leIronXL bibliothèque. Il s'agit de l'une des choses les plus élémentaires que vous devez savoir dans n'importe quel langage de programmation, car les fichiers CSV sont un moyen très courant de stocker des données et de les transférer d'un système ou d'une application à l'autre. Nous couvrirons tous les aspects, de la configuration de votre projet à l'analyse efficace des fichiers CSV.
Comment convertir un fichier CSV en liste dans C&num ;
Créer un projet de console C# dans Visual Studio.
Installez la bibliothèque CSV C# à l'aide du gestionnaire de paquets NuGet.
Chargez le fichier CSV en utilisant la méthode WorkBook.LoadCSV.
Lire les données du fichier et remplir la liste.
Imprimer la liste sur la console.
Mise en place du projet
Étape 1 : Création d'un nouveau projet C
Ouvrez Visual Studio : Démarrez Visual Studio sur votre ordinateur.
Créer un nouveau projet : Cliquez sur "Créer un nouveau projet". Une fenêtre s'ouvre, dans laquelle vous pouvez sélectionner le type de projet.
Sélectionnez le type de projet : Choisissez "Console App(.NET Core)le type de projet doit être défini comme "projet" pour plus de simplicité.
Nommez votre projet : Nommez votre projet CSVFileReader.
Choisissez l'emplacement : Sélectionnez un emplacement approprié sur votre appareil pour enregistrer ce projet.
Générer le projet : Cliquez sur "Créer" pour initialiser votre nouveau projet C#.
Étape 2 : Installation de la bibliothèque IronXL
Ouvrez le gestionnaire de paquets NuGet : Dans Visual Studio, allez dans le menu "Outils", puis sélectionnez "NuGet Package Manager" et choisissez "Gérer les paquets NuGet pour la solution...".
Recherchez IronXL : Cliquez sur l'onglet "Parcourir" et recherchez "IronXL.Excel"
Installer IronXL : Trouvez le paquet IronXL dans les résultats de la recherche, sélectionnez-le et cliquez sur "Installer" Assurez-vous d'accepter les accords de licence et vérifiez les changements.
Vérifiez l'installation : Après l'installation, vous devriez voir IronXL référencé dans les références de votre projet.
Maintenant, votre projet CSVFileReader est configuré avec la bibliothèque IronXL, et vous êtes prêt à commencer à lire et à traiter des fichiers CSV en C#. Cette configuration constitue la base des tâches de lecture de fichiers CSV que nous entreprendrons dans les sections suivantes de ce tutoriel.
Analyse et traitement des fichiers CSV en C# ;
Une fois le projet mis en place et la bibliothèque IronXL installée, concentrons-nous sur l'analyse et le traitement des fichiers CSV. Nous allons travailler dans le fichier Program.cs, qui est automatiquement généré dans votre projet CSVFileReader.
Étape 1 : Spécification du chemin d'accès au fichier
Avant de pouvoir lire des données, nous devons savoir où se trouve notre fichier CSV. Définir une variable dans la méthode Main pour stocker le chemin du fichier.
string filename = "csvfile.csv"; // Replace with your actual file path
string filename = "csvfile.csv"; // Replace with your actual file path
Dim filename As String = "csvfile.csv" ' Replace with your actual file path
$vbLabelText $csharpLabel
Étape 2 : Chargement du fichier CSV
IronXL facilite le chargement d'un fichier CSV. Utilisez la méthode WorkBook.LoadCSV pour lire le fichier CSV dans un objet WorkBook.
var csv = WorkBook.LoadCSV(filename);
var csv = WorkBook.LoadCSV(filename);
Dim csv = WorkBook.LoadCSV(filename)
$vbLabelText $csharpLabel
Étape 3 : Définition d'une structure de données
Créez une classe qui représente la structure de données de votre fichier CSV. Par exemple, si votre fichier CSV contient des informations sur des personnes, définissez une classe Person comme suit :
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Public Class Person
Public Property Name() As String
Public Property Age() As Integer
End Class
$vbLabelText $csharpLabel
Étape 4 : Analyse des données CSV
Dans cette étape, nous allons analyser le fichier CSV et remplir une "liste"` avec les données. Nous utilisons IronXL pour gérer la lecture du CSV, et la clé est de traiter correctement chaque ligne ou var ligne du CSV, en tenant compte des en-têtes et de toutes les lignes vides potentielles. Voici une description détaillée du code :
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets (0).Rows
If isFirstRow Then
isFirstRow = False ' Set the flag to false after skipping the first row
Continue For
End If
If row.IsEmpty Then
Continue For ' Skip empty rows
End If
Dim cells = row.ToArray()
Dim person As New Person() With {
.Name = cells (0).StringValue,
.Age = Integer.Parse(cells (1).StringValue)
}
people.Add(person)
Next row
$vbLabelText $csharpLabel
Dans ce processus d'analyse, nous initialisons d'abord une Liste<Person> pour stocker les données analysées et utiliser un indicateur booléen isFirstRow pour sauter la ligne d'en-tête du fichier CSV. La boucle foreach parcourt chaque ligne du fichier CSV. Lors de la première itération, la ligne d'en-tête est identifiée et ignorée, ce qui garantit que seules les lignes de données sont traitées. Nous vérifions ensuite que chaque ligne n'est pas vide en utilisant row.IsEmpty. Cette étape est essentielle pour éviter les erreurs d'analyse des lignes vides.
Pour chaque ligne de données, nous convertissons la ligne en un tableau de cellules(row.ToArray()) et crée ensuite un objet Person avec ces données. Il est essentiel d'analyser et de convertir correctement les types de données, par exemple en convertissant la chaîne "Age" en un nombre entier. L'objet Personne analysé est alors ajouté à notre liste people. Cette approche garantit que seules les lignes de données valides sont traitées et stockées, ce qui permet de gérer efficacement les problèmes potentiels tels que les chaînes non numériques dans les colonnes numériques ou les lignes vides inattendues.
Étape 5 : Affichage des données
Après avoir analysé les données CSV dans notre List<Person>, l'étape suivante consiste à afficher et à vérifier les données. Cela permet non seulement de s'assurer que l'analyse est réussie, mais aussi d'observer le résultat et d'effectuer un contrôle rapide de la qualité des données. Voici comment vous pouvez mettre cela en œuvre :
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
For Each person In people
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
$vbLabelText $csharpLabel
Voici le code complet de Program.cs :
using IronXL;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string [] args)
{
string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
var csv = WorkBook.LoadCSV(filename);
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
using IronXL;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class Program
{
static void Main(string [] args)
{
string filename = @"C:\Users\tayya\Downloads\sample_data.csv"; // Replace with your actual file path
var csv = WorkBook.LoadCSV(filename);
List<Person> people = new List<Person>();
bool isFirstRow = true; // Add a flag to check for the first row
foreach (var row in csv.WorkSheets [0].Rows)
{
if (isFirstRow)
{
isFirstRow = false; // Set the flag to false after skipping the first row
continue;
}
if (row.IsEmpty) continue; // Skip empty rows
var cells = row.ToArray();
var person = new Person()
{
Name = cells [0].StringValue,
Age = int.Parse(cells [1].StringValue) // Ensure this is a numeric value
};
people.Add(person);
}
foreach (var person in people)
{
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");
}
}
}
Imports IronXL
Public Class Person
Public Property Name() As String
Public Property Age() As Integer
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim filename As String = "C:\Users\tayya\Downloads\sample_data.csv" ' Replace with your actual file path
Dim csv = WorkBook.LoadCSV(filename)
Dim people As New List(Of Person)()
Dim isFirstRow As Boolean = True ' Add a flag to check for the first row
For Each row In csv.WorkSheets (0).Rows
If isFirstRow Then
isFirstRow = False ' Set the flag to false after skipping the first row
Continue For
End If
If row.IsEmpty Then
Continue For ' Skip empty rows
End If
Dim cells = row.ToArray()
Dim person As New Person() With {
.Name = cells (0).StringValue,
.Age = Integer.Parse(cells (1).StringValue)
}
people.Add(person)
Next row
For Each person In people
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}")
Next person
End Sub
End Class
$vbLabelText $csharpLabel
Sortie du code
Lorsque vous exécutez le fichier, il affiche les données de la liste dans la console :
Traitement de différents types de données
Lorsque l'on traite différents types de données dans un fichier CSV, il est important d'adapter la logique d'analyse au type spécifique de chaque colonne de données. Dans l'exemple de la classe Person, alors que le Name est une chaîne de caractères et peut être directement assigné en utilisant StringValue, les champs numériques comme Age nécessitent une conversion de chaîne en entier en utilisant Int32.Parse ou Convert.ToInt32. Ceci est essentiel pour éviter les erreurs de correspondance de type.
Pour les types de données plus complexes, comme les dates, utilisez DateTime.Parse pour convertir les représentations de chaînes de caractères des dates en objets DateTime. Il est important de connaître le format de date utilisé dans votre fichier CSV et de veiller à ce qu'il corresponde au format attendu dans votre code. Des formats de date incohérents peuvent entraîner des erreurs d'analyse ou une interprétation incorrecte des données.
Conclusion
Vous venez d'apprendre à lire, analyser et afficher les données d'un fichier CSV à l'aide d'IronXL en C#. Cette approche peut être utilisée pour différents types de structures de données et de formats de fichiers. Il s'agit donc d'une compétence globalement utile pour tous les développeurs qui choisissent C# comme langage principal.
IronXL offre uneessai gratuit pour que les utilisateurs puissent expérimenter ses fonctionnalités. Une fois la période d'essai terminée, la licence pour IronXL commence au prix de $749.
Gardez à l'esprit que les exceptions et les cas limites doivent être traités pour écrire un code plus robuste, en particulier lors de la gestion de différents types de données et de l'utilisation de fichiers volumineux. Continuez à expérimenter et à explorer d'autres fonctionnalités d'IronXL pour améliorer le traitement de vos données en C#. Bon codage!
Jordi maîtrise parfaitement Python, C# et C++. Lorsqu'il ne met pas à profit ses compétences chez Iron Software, il se consacre à la programmation de jeux. Partageant des responsabilités en matière de tests de produits, de développement de produits et de recherche, Jordi apporte une valeur ajoutée considérable à l'amélioration continue des produits. Cette expérience variée le stimule et l'engage, et il dit que c'est l'un des aspects qu'il préfère dans son travail chez Iron Software. Jordi a grandi à Miami, en Floride, et a étudié l'informatique et les statistiques à l'université de Floride.
< PRÉCÉDENT Comment importer un fichier CSV dans une base de données en C# ?
SUIVANT > Comment enregistrer un fichier Excel en VB .NET
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucune obligation de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre gratuit Démonstration en direct
Fiable par plus de 2 millions d'ingénieurs dans le monde entier