IRONSOFTWAREHOME
UTILISATION D'IRONXL

Comment importer, lire et manipuler des données Excel en C#

Curtis Chau
Curtis Chau
Updated: 28 juin 2026

StreamReader ne peut pas lire les fichiers Excel car les formats XLSX/XLS sont des structures binaires complexes ou des XML compressés, non des textes simples. Utilisez plutôt la bibliothèque IronXL, qui fournit WorkBook.Load() pour la lecture de fichiers et FromStream() pour le traitement des flux mémoire sans dépendances d'Excel Interop.

De nombreux développeurs C# rencontrent un défi commun lorsqu'ils tentent de lire des fichiers de feuilles Excel : leur fiable StreamReader, qui fonctionne parfaitement pour les fichiers texte, échoue mystérieusement avec les documents Excel. Si vous avez essayé de lire des fichiers Excel en utilisant StreamReader en C# seulement pour voir des caractères incompréhensibles ou des exceptions, vous n'êtes pas seul. Ce tutoriel explique pourquoi StreamReader ne peut pas traiter directement les fichiers Excel et présente la solution appropriée en utilisant IronXL sans Excel Interop.

La confusion survient souvent parce que les fichiers CSV, que Excel peut ouvrir, fonctionnent bien avec StreamReader. Cependant, les véritables fichiers Excel (XLSX, XLS) nécessitent une approche fondamentalement différente. Comprendre cette distinction vous épargnera des heures de débogage et vous guidera vers l'outil adapté à la tâche. Pour les ingénieurs DevOps déployant des applications dans des conteneurs Docker ou des environnements Kubernetes, cela devient particulièrement critique car les dépendances natives peuvent compliquer la conteneurisation.

Page d'accueil d'IronXL for .NET montrant un exemple de code C# pour lire des fichiers Excel sans interopérabilité Microsoft Office, avec les fonctionnalités de la bibliothèque et les statistiques de téléchargement

Pourquoi StreamReader ne peut-il pas lire les fichiers Excel ?

StreamReader est conçu pour les fichiers texte, en lisant les données de caractères ligne par ligne en utilisant un encodage spécifié. Les fichiers Excel, malgré leur apparence de feuille de calcul, sont en réalité des structures binaires complexes ou des XML compressés en ZIP qu'StreamReader ne peut pas interpréter. Les fichiers XLSX modernes suivent la norme Office Open XML, tandis que les fichiers XLS plus anciens utilisent un format binaire propriétaire.

static void Main(string[] args)
{
 // This code will NOT work - demonstrates the problem
 using (StreamReader reader = new StreamReader("ProductData.xlsx"))
 {
    string content = reader.ReadLine(); // Attempts to read Excel as text
    Console.WriteLine(content); // Outputs garbled binary data
 }
}

Lorsque vous exécuterez cet extrait de code, au lieu de voir les données de votre feuille de calcul, vous obtiendrez des données binaires, telles que " PK♥♦ " ou des caractères similaires. Cela s'explique par le fait que les fichiers XLSX sont des archives ZIP contenant plusieurs fichiers XML, tandis que les fichiers XLS utilisent un format binaire propriétaire. StreamReader attend un texte simple et essaie d'interpréter ces structures complexes comme des caractères, ce qui entraîne une sortie dépourvue de sens. Pour les applications conteneurisées, tenter d'utiliser les bibliothèques Excel natives ou l'interopérabilité COM nécessiterait d'installer Microsoft Office dans votre conteneur, ce qui augmenterait considérablement la taille et la complexité de l'image.

Que se passe-t-il lorsque StreamReader tente de traiter des fichiers Excel ?

L'exemple suivant illustre un fichier Excel typique contenant des données produit que nous souhaitons traiter. Remarquez comme les données structurées de la feuille de calcul apparaissent claires et organisées lorsqu'elles sont visualisées dans Excel :

Feuille de calcul Excel montrant un tableau de données de produits avec des colonnes pour les noms de produits (Ordinateur portable, Souris, Clavier, Moniteur, Casque), des prix et des valeurs VRAI/FAUX dans les colonnes A à D

Pourquoi le résultat affiche-t-il des caractères illisibles ?

Lorsque StreamReader tente de traiter ce fichier Excel, la sortie de la console révèle le problème sous-jacent. Au lieu de données lisibles, vous voyez un contenu binaire car la structure du fichier ne peut pas être interprétée comme du texte :

Console de débogage de Visual Studio montrant l'exécution réussie du programme avec le code de sortie 0 et une invite pour appuyer sur une touche pour fermer la fenêtre

Les fichiers Excel modernes (XLSX) contiennent plusieurs composants : feuilles de calcul, styles, chaînes partagées et relations, le tout regroupé. Cette complexité nécessite des bibliothèques spécialisées qui comprennent la structure des fichiers Excel , ce qui nous amène à IronXL. La bibliothèque gère toutes ces complexités en interne tout en fournissant une API simple, ce qui la rend idéale pour les pipelines de déploiement automatisés où l'intervention manuelle est impossible.

Comment lire des fichiers Excel avec IronXL ?

IronXL offre une solution simple pour lire les fichiers Excel en C#. Contrairement à StreamReader, IronXL comprend la structure interne d'Excel et fournit des méthodes intuitives pour accéder à vos données. La bibliothèque prend en charge Windows, Linux, macOS et les conteneurs Docker , ce qui la rend idéale pour les applications modernes et multiplateformes. Pour les équipes DevOps, l'architecture zéro-dépendance d'IronXL signifie qu'il n'y a pas de bibliothèques natives ou de composants COM à gérer lors du déploiement.

Diagramme de prise en charge multiplateforme montrant la compatibilité .NET avec différentes versions, systèmes d'exploitation, environnements de développement et plates-formes cloud, y compris Windows, Linux, macOS, Docker, Azure et AWS

Commencez par installer IronXL via le gestionnaire de packages NuGet :

PM > Install-Package IronXL.Excel

Sortie du terminal montrant l'installation réussie du package IronXL.Excel et de ses dépendances via la console du gestionnaire de packages dans Visual Studio

Voici comment lire correctement un fichier Excel :

using IronXL;
// Load the Excel file
WorkBook workbook = WorkBook.Load("sample.xlsx");
WorkSheet worksheet = workbook.DefaultWorkSheet;
// Read specific cell values
string cellValue = worksheet["A1"].StringValue;
Console.WriteLine($"Cell A1 contains: {cellValue}");
// Read a range of cells
foreach (var cell in worksheet["A1:C5"])
{
    Console.WriteLine($"{cell.AddressString}: {cell.Text}");
}

Ce code charge correctement votre fichier Excel et permet un accès direct aux valeurs des cellules . La méthode WorkBook.Load détecte automatiquement le format du fichier ( XLSX , XLS , XLSM, CSV ) et gère en interne toute l'analyse complexe. Vous pouvez accéder aux cellules en utilisant la notation Excel habituelle, comme " A1 ", ou aux plages, comme " A1:C5 ", ce qui rend le code intuitif pour toute personne familière avec Excel.

Pour les déploiements conteneurisés, vous pouvez facilement inclure des points de terminaison de contrôle d'intégrité qui vérifient les capacités de traitement Excel :

// Health check endpoint for containerized apps
public async Task<IActionResult> HealthCheck()
{
    try
    {
        // Test Excel functionality
        using var workbook = WorkBook.Create(ExcelFileFormat.XLSX);
        var sheet = workbook.CreateWorkSheet("HealthCheck");
        sheet["A1"].Value = DateTime.UtcNow;
        
        // Convert to byte array for validation
        var bytes = workbook.ToByteArray();
        return Ok(new { 
            status = "healthy", 
            excelSupport = true,
            timestamp = DateTime.UtcNow 
        });
    }
    catch (Exception ex)
    {
        return StatusCode(503, new { 
            status = "unhealthy", 
            error = ex.Message 
        });
    }
}

Comment lire des fichiers Excel à partir de flux de mémoire ?

Dans le monde réel, les applications ont souvent besoin de traiter des fichiers Excel à partir de flux plutôt que de fichiers sur disque. Les scénarios courants incluent la gestion des chargements web, la récupération de fichiers à partir de bases de données ou le traitement de données provenant de stockages cloud tels que AWS S3 ou Azure Blob Storage . IronXL gère ces situations sans problème :

using IronXL;
using System.IO;
// Read Excel from a memory stream
byte[] fileBytes = File.ReadAllBytes("ProductData.xlsx");
using (MemoryStream stream = new MemoryStream(fileBytes))
{
    WorkBook workbook = WorkBook.FromStream(stream);
    WorkSheet worksheet = workbook.DefaultWorkSheet;
    // Process the data
    int rowCount = worksheet.RowCount;
    Console.WriteLine($"The worksheet has {rowCount} rows");
    // Read all data into a DataTable
    var dataTable = worksheet.ToDataTable(false);
    // Display DataTable row count 
    Console.WriteLine($"Loaded {dataTable.Rows.Count} data rows");
}

La méthode FromStream accepte tout type de flux, qu'il s'agisse d'un MemoryStream, FileStream ou d'un flux réseau. Cette flexibilité vous permet de traiter des fichiers Excel provenant de diverses sources sans avoir à les enregistrer au préalable sur le disque. L'exemple illustre également la conversion des données d'une feuille de calcul en un objet DataTable , qui s'intègre parfaitement aux bases de données et aux scénarios de liaison de données. Pour les architectures de microservices , cette approche basée sur les flux minimise les E/S disque et améliore les performances.

Quels résultats produit le traitement des flux de mémoire ?

Console de débogage Visual Studio montrant la sortie de la lecture des données Excel, affichant 'La feuille de calcul contient 5 lignes' et '5 lignes de données chargées'

Quand dois-je utiliser l'expéditeur d'objets dans les scénarios de lecture Excel ?

Dans les cas où ce code est utilisé dans une programmation événementielle (par exemple, gestion d'un bouton de téléchargement de fichier dans Windows Forms ou ASP.NET), la signature de la méthode inclut souvent des paramètres comme object sender et EventArgs e. Ce contexte garantit que la logique de traitement Excel s'intègre correctement aux événements d'interface utilisateur ou de service. Pour les API conteneurisées, vous pouvez traiter les chargements directement à partir des requêtes HTTP :

[HttpPost("upload")]
public async Task<IActionResult> ProcessExcelUpload(IFormFile file)
{
    if (file == null || file.Length == 0)
        return BadRequest("No file uploaded");
    
    using var stream = new MemoryStream();
    await file.CopyToAsync(stream);
    stream.Position = 0;
    
    var workbook = WorkBook.FromStream(stream);
    var worksheet = workbook.DefaultWorkSheet;
    
    // Process and return results
    var data = worksheet.ToDataSet();
    return Ok(new { 
        sheets = workbook.WorkSheets.Count,
        rows = worksheet.RowCount,
        processed = DateTime.UtcNow
    });
}

Aperçu des fonctionnalités d'une bibliothèque de manipulation Excel pour C# montrant six catégories principales : Créer, Sauvegarder et Exporter, Modifier les classeurs, Travailler avec les données, Sécuriser vos classeurs et listes de fonctionnalités détaillées sous chaque catégorie

Comment convertir des fichiers Excel en CSV et inversement ?

Bien que StreamReader puisse gérer les fichiers CSV, vous devez souvent convertir entre les formats Excel et CSV. IronXL rend cette conversion simple, ce qui est particulièrement utile pour les pipelines ETL et les scénarios d'intégration de données courants dans les flux de travail DevOps :

using IronXL;
// Load an Excel file and save as CSV
WorkBook workbook = WorkBook.Load("data.xlsx");
workbook.SaveAsCsv("output.csv");
// Load a CSV file and save as Excel
WorkBook csvWorkbook = WorkBook.LoadCSV("input.csv");
csvWorkbook.SaveAs("output.xlsx");
// Export specific worksheet to CSV
WorkSheet worksheet = workbook.WorkSheets[0];
worksheet.SaveAsCsv("worksheet1.csv");

Ces conversions préservent vos données tout en modifiant le format du fichier. Lors de la conversion d'Excel en CSV , IronXL aplatit par défaut la première feuille de calcul, mais vous pouvez spécifier la feuille de calcul à exporter. La conversion d'un fichier CSV en Excel crée une feuille de calcul correctement formatée qui préserve les types de données et permet des ajouts ultérieurs de formatage et de formules .

Pour les pipelines de données automatisés, vous pouvez également exporter aux formats JSON ou XML :

// Export Excel to multiple formats for data pipelines
var workbook = WorkBook.Load("report.xlsx");

// Export to JSON for API responses
string jsonData = workbook.ToJson();

// Export to HTML for web display
workbook.SaveAsHtml("report.html");

// Export to XML for integration systems
workbook.SaveAsXml("report.xml");

// Export specific range to DataTable for database insertion
var dataTable = workbook.DefaultWorkSheet["A1:D10"].ToDataTable();

Bonnes pratiques de déploiement de conteneurs

Pour les ingénieurs DevOps déployant des applications de traitement Excel, IronXL offre plusieurs avantages. Voici un Dockerfile prêt pour la production et optimisé pour le traitement Excel :

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

# Install any required system fonts for Excel rendering
RUN apt-get update && apt-get install -y \
    fontconfig \
    libfreetype6 \
    && rm -rf /var/lib/apt/lists/*

FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
WORKDIR /src
COPY ["YourApp.csproj", "."]
RUN dotnet restore
COPY . .
RUN dotnet build -c Release -o /app/build

FROM build AS publish
RUN dotnet publish -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .

# Set environment variables for IronXL
ENV IRONXL_LICENSE_KEY=${IRONXL_LICENSE_KEY}
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false

ENTRYPOINT ["dotnet", "YourApp.dll"]
Text

Ce Dockerfile garantit le bon fonctionnement de votre application de traitement Excel dans des conteneurs avec un minimum de dépendances. La gestion des licences s'effectue via des variables d'environnement, ce qui facilite leur administration dans différents environnements de déploiement.

Quelles sont les prochaines étapes pour le traitement Excel en C# ?

L'incapacité de StreamReader à traiter les fichiers Excel découle de la différence fondamentale entre le texte brut et la structure complexe des fichiers Excel. Bien que StreamReader fonctionne parfaitement pour les formats CSV et autres formats texte, les vrais fichiers Excel nécessitent une bibliothèque spécialisée comme IronXL qui comprend les structures binaires et XML à l'intérieur.

IronXL offre une solution complète grâce à son API intuitive, sa prise en charge étendue des formats et ses capacités de traitement de flux transparentes. Que vous développiez des applications web , des logiciels de bureau ou des services cloud, IronXL gère les fichiers Excel de manière fiable sur toutes les plateformes. La prise en charge par cette bibliothèque de la mise en forme conditionnelle , des graphiques , des formules et des fonctionnalités avancées d'Excel en fait une solution complète pour les applications Enterprise .

Pour les équipes DevOps, l'architecture conviviale pour les conteneurs d'IronXL, ses dépendances système minimales et ses caractéristiques de performance solides en font un choix idéal pour les applications cloud-native modernes. La bibliothèque prend en charge la mise à l'échelle horizontale , fonctionne de manière transparente dans les pods Kubernetes et s'intègre bien aux pipelines CI/CD.

Prêt à commencer à travailler correctement avec les fichiers Excel ? Téléchargez la version d'essai gratuite d'IronXL qui correspond le mieux aux besoins de votre projet. La bibliothèque propose des options de licence flexibles, notamment pour les déploiements de développement, de préproduction et de production, avec des options pour les environnements conteneurisés et les applications natives du cloud.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise