Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment exporter des données vers un modèle Excel existant en C# à l'aide IronXL

L'utilisation de modèles Microsoft Excel vous permet de conserver la mise en forme, les formules et les mises en page tout en remplissant les données de manière dynamique. Ce tutoriel explique comment exporter des données vers des modèles de feuilles de calcul Excel existants à l'aide IronXL , sans dépendre de Microsoft Office ni d'Excel Interop. Vous apprendrez à charger des modèles prédéfinis, à remplacer les marqueurs d'espace réservé, à écrire des données tabulaires, à gérer les cas particuliers courants et à enregistrer des fichiers XLSX de qualité professionnelle dans n'importe quelle application .NET 10.

Si vous devez exporter vers un modèle Excel existant sans avoir Microsoft Office installé, IronXL fournit une solution haute performance qui prend en charge l'insertion de données à partir de dictionnaires, de listes, d'objets DataTable et de résultats de requêtes de base de données. Que vos modèles soient des factures formatées, des tableaux de bord mensuels ou des rapports de conformité, IronXL les remplit automatiquement et préserve chaque règle de style, formule et mise en forme conditionnelle.

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 1 - IronXL

Pourquoi les modèles Excel améliorent-ils la génération de rapports ?

Les modèles Excel offrent des avantages considérables par rapport à la création de feuilles de calcul à partir de zéro. Les modèles conservent une mise en forme professionnelle, des formules complexes, des règles de mise en forme conditionnelle et des structures de données validées que votre organisation a déjà approuvées. Les équipes financières, les services opérationnels et les groupes de conformité disposent souvent de modèles standardisés pour les factures, les tableaux de bord et les déclarations réglementaires qui doivent conserver leur conception tout en intégrant de nouvelles données provenant de bases de données, d'API ou de collections en mémoire.

En remplissant les modèles existants par programmation, vous économisez des heures de travail de mise en forme et garantissez la cohérence de chaque document généré. IronXL prend en charge les formats XLSX, XLS, XLSM et XLTX sans nécessiter l'installation d'Office, ce qui le rend adapté aux environnements serveur, aux conteneurs Docker et aux pipelines cloud où l'installation de Microsoft Office est impraticable ou impossible.

Principaux avantages de l'approche par modèles :

  • Préservation des formules : les formules SOMME, MOYENNE et de recherche existantes sont recalculées automatiquement après l'écriture des données.
  • Conservation du style : les polices, les bordures, les couleurs des cellules et les formats numériques restent exactement tels que conçus.
  • Mise en forme conditionnelle : les règles liées aux plages de cellules continuent de s'appliquer en fonction des nouvelles valeurs de données.
  • Aucune dépendance à Office : IronXL lit et écrit les fichiers Excel entièrement en code .NET managé.
  • Compatibilité multiplateforme : fonctionne sous Windows, Linux et macOS, y compris les environnements .NET 10

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 2 - Multiplateforme

Comment installer IronXL dans votre projet ?

Commencez par installer IronXL via NuGet. Ouvrez la console du gestionnaire de packages et exécutez :

Install-Package IronXL
Install-Package IronXL
SHELL

Ou utilisez le .NET CLI :

dotnet add package IronXL
dotnet add package IronXL
SHELL

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 3 - Installation

IronXL fonctionne de manière indépendante sans nécessiter l'installation de Microsoft Office, ce qui le rend idéal pour les environnements serveur et les applications multiplateformes. Pour des instructions d'installation détaillées, consultez le guide de démarrage IronXL . La bibliothèque cible .NET Framework, .NET Core et .NET 5 à .NET 10, fonctionnant sous Windows, Linux et macOS.

Après l'installation, ajoutez l'espace de noms en haut de votre fichier :

using IronXL;
using IronXL;
$vbLabelText   $csharpLabel

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 4 - Fonctionnalités

Comment charger et remplir un modèle Excel existant ?

Charger un modèle existant est simple grâce à la méthode WorkBook.Load() d'IronXL. L'exemple ci-dessous ouvre un modèle de rapport de ventes trimestriel et remplit des cellules spécifiques avec des données à l'aide d'instructions de niveau supérieur :

using IronXL;

// Load the existing Excel template
WorkBook workbook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Write header values to named cells
sheet["B2"].Value = "Q4 2025 Sales Report";
sheet["C4"].StringValue = DateTime.Now.ToString("MMMM dd, yyyy");
sheet["C6"].DecimalValue = 125000.50m;
sheet["C7"].DecimalValue = 98500.75m;

// Add a profit formula -- Excel recalculates automatically
sheet["C8"].Formula = "=C6-C7";

// Populate a column range with monthly data
decimal[] monthlyData = { 10500, 12300, 15600, 11200 };
for (int i = 0; i < monthlyData.Length; i++)
{
    sheet[$"E{10 + i}"].DecimalValue = monthlyData[i];
}

// Save the populated file
workbook.SaveAs("Q4_Sales_Report.xlsx");
using IronXL;

// Load the existing Excel template
WorkBook workbook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Write header values to named cells
sheet["B2"].Value = "Q4 2025 Sales Report";
sheet["C4"].StringValue = DateTime.Now.ToString("MMMM dd, yyyy");
sheet["C6"].DecimalValue = 125000.50m;
sheet["C7"].DecimalValue = 98500.75m;

// Add a profit formula -- Excel recalculates automatically
sheet["C8"].Formula = "=C6-C7";

// Populate a column range with monthly data
decimal[] monthlyData = { 10500, 12300, 15600, 11200 };
for (int i = 0; i < monthlyData.Length; i++)
{
    sheet[$"E{10 + i}"].DecimalValue = monthlyData[i];
}

// Save the populated file
workbook.SaveAs("Q4_Sales_Report.xlsx");
$vbLabelText   $csharpLabel

Ce code charge un modèle prédéfini, conserve toute la mise en forme existante et remplit des cellules spécifiques. La propriété DecimalValue garantit que les données numériques conservent un format monétaire ou décimal correct. Les cellules de formule se recalculent automatiquement lorsque les données adjacentes changent, de sorte que la logique de calcul du modèle reste intacte.

Pour obtenir des conseils sur l'utilisation des références et des plages de cellules Excel, consultez la documentation IronXL sur les cellules et les plages . Vous pouvez également utiliser la page d'exemples IronXL pour explorer d'autres modèles.

Entrée

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 5 - Exemple de modèle d'entrée

Sortie

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 6 - Charger la sortie du modèle Excel

Comment remplacer les marqueurs d'espace réservé dans un modèle ?

De nombreux modèles utilisent des marqueurs de texte d'espace réservé -- par exemple, {{CustomerName}} ou {{InvoiceDate}} -- qui doivent être remplacés par des valeurs d'exécution réelles. IronXL gère cela par itération de cellules sur une plage définie. Ce modèle est particulièrement utile pour la génération de factures, le remplissage des contrats et la création de rapports personnalisés :

using IronXL;

// Load an invoice template containing placeholder markers
WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Iterate over a range and replace placeholder text
foreach (var cell in sheet["A1:H50"])
{
    if (cell.Text.Contains("{{CustomerName}}"))
        cell.Value = cell.Text.Replace("{{CustomerName}}", "Acme Corporation");

    if (cell.Text.Contains("{{InvoiceDate}}"))
        cell.Value = cell.Text.Replace("{{InvoiceDate}}", DateTime.Now.ToShortDateString());

    if (cell.Text.Contains("{{InvoiceNumber}}"))
        cell.Value = cell.Text.Replace("{{InvoiceNumber}}", "INV-2025-001");
}

// Append line items starting at row 15
var items = new[]
{
    new { Description = "Software License", Qty = 5, Price = 299.99 },
    new { Description = "Support Package",  Qty = 1, Price = 999.99 }
};

int startRow = 15;
foreach (var item in items)
{
    sheet[$"B{startRow}"].Value      = item.Description;
    sheet[$"E{startRow}"].IntValue   = item.Qty;
    sheet[$"F{startRow}"].DoubleValue = item.Price;
    sheet[$"G{startRow}"].Formula    = $"=E{startRow}*F{startRow}";
    startRow++;
}

workbook.SaveAs("GeneratedInvoice.xlsx");
using IronXL;

// Load an invoice template containing placeholder markers
WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

// Iterate over a range and replace placeholder text
foreach (var cell in sheet["A1:H50"])
{
    if (cell.Text.Contains("{{CustomerName}}"))
        cell.Value = cell.Text.Replace("{{CustomerName}}", "Acme Corporation");

    if (cell.Text.Contains("{{InvoiceDate}}"))
        cell.Value = cell.Text.Replace("{{InvoiceDate}}", DateTime.Now.ToShortDateString());

    if (cell.Text.Contains("{{InvoiceNumber}}"))
        cell.Value = cell.Text.Replace("{{InvoiceNumber}}", "INV-2025-001");
}

// Append line items starting at row 15
var items = new[]
{
    new { Description = "Software License", Qty = 5, Price = 299.99 },
    new { Description = "Support Package",  Qty = 1, Price = 999.99 }
};

int startRow = 15;
foreach (var item in items)
{
    sheet[$"B{startRow}"].Value      = item.Description;
    sheet[$"E{startRow}"].IntValue   = item.Qty;
    sheet[$"F{startRow}"].DoubleValue = item.Price;
    sheet[$"G{startRow}"].Formula    = $"=E{startRow}*F{startRow}";
    startRow++;
}

workbook.SaveAs("GeneratedInvoice.xlsx");
$vbLabelText   $csharpLabel

Cette approche recherche les marqueurs dans une plage de cellules définie et les remplace par des valeurs réelles. La mise en forme du modèle (polices, couleurs, bordures et formats numériques) reste intacte. Pour des modifications de style plus avancées lors de l'exécution, consultez le guide de style des cellules IronXL qui couvre les couleurs d'arrière-plan, les propriétés des polices et les styles de bordure.

Comment sélectionner la plage de cellules appropriée pour l'itération ?

Lors de la recherche d'espaces réservés, choisissez une plage qui couvre toutes les cellules contenant des marqueurs sans être inutilement grande. Une plage de caractères comme "A1:H50" est efficace pour la plupart des modèles de factures. Pour les modèles dont les données sont réparties sur des centaines de lignes, limitez l'itération à la section d'en-tête et utilisez l'adressage direct des cellules pour le corps des données. Cela permet de garantir des performances prévisibles, même avec des classeurs volumineux.

Comment gérez-vous les espaces réservés manquants ou non concordants ?

Ajoutez une vérification nulle ou vide avant d'appeler .Replace() pour éviter les exceptions lorsque les versions du modèle diffèrent. Vous pouvez consigner les espaces réservés non résolus à des fins de débogage :

using IronXL;

WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

var replacements = new Dictionary<string, string>
{
    { "{{CustomerName}}", "Acme Corporation" },
    { "{{InvoiceDate}}", DateTime.Now.ToShortDateString() },
    { "{{InvoiceNumber}}", "INV-2025-002" }
};

foreach (var cell in sheet["A1:H50"])
{
    if (string.IsNullOrEmpty(cell.Text)) continue;

    foreach (var replacement in replacements)
    {
        if (cell.Text.Contains(replacement.Key))
            cell.Value = cell.Text.Replace(replacement.Key, replacement.Value);
    }
}

workbook.SaveAs("GeneratedInvoice_Safe.xlsx");
using IronXL;

WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;

var replacements = new Dictionary<string, string>
{
    { "{{CustomerName}}", "Acme Corporation" },
    { "{{InvoiceDate}}", DateTime.Now.ToShortDateString() },
    { "{{InvoiceNumber}}", "INV-2025-002" }
};

foreach (var cell in sheet["A1:H50"])
{
    if (string.IsNullOrEmpty(cell.Text)) continue;

    foreach (var replacement in replacements)
    {
        if (cell.Text.Contains(replacement.Key))
            cell.Value = cell.Text.Replace(replacement.Key, replacement.Value);
    }
}

workbook.SaveAs("GeneratedInvoice_Safe.xlsx");
$vbLabelText   $csharpLabel

L'utilisation d'un dictionnaire de remplacement facilite la maintenance et l'extension du code lorsque de nouveaux types d'espace réservé sont ajoutés au modèle.

Comment générer un rapport mensuel à partir d'un modèle ?

Voici un exemple concret qui génère un rapport de ventes mensuel à partir d'un modèle Excel existant contenant des cellules préformatées, des graphiques et des formules de pourcentage. Le code utilise des instructions de niveau supérieur et accepte un dictionnaire de correspondances produit-vente :

using IronXL;

// Load the monthly report template
WorkBook workbook = WorkBook.Load("MonthlyReportTemplate.xlsx");
WorkSheet sheet = workbook.GetWorkSheet("Monthly Report");

// Build sample sales data
var salesData = new Dictionary<string, decimal>
{
    { "Product A", 42500.00m },
    { "Product B", 31750.50m },
    { "Product C", 18300.25m }
};

// Write report header
sheet["B2"].Value = $"Sales Report - {DateTime.Now:MMMM yyyy}";
sheet["B3"].Value = $"Generated: {DateTime.Now:g}";

// Write each product row starting at row 6
int currentRow = 6;
decimal totalSales = salesData.Values.Sum();

foreach (var sale in salesData)
{
    sheet[$"B{currentRow}"].Value = sale.Key;
    sheet[$"C{currentRow}"].DecimalValue = sale.Value;
    // Percentage of total formula
    sheet[$"D{currentRow}"].Formula = $"=C{currentRow}/C{currentRow + salesData.Count}*100";
    currentRow++;
}

// Write the total row and apply bold style
sheet[$"C{currentRow}"].DecimalValue = totalSales;
sheet[$"C{currentRow}"].Style.Font.Bold = true;

// Save with a date-stamped filename
string outputPath = $"Reports/Monthly_Report_{DateTime.Now:yyyyMMdd}.xlsx";
workbook.SaveAs(outputPath);
using IronXL;

// Load the monthly report template
WorkBook workbook = WorkBook.Load("MonthlyReportTemplate.xlsx");
WorkSheet sheet = workbook.GetWorkSheet("Monthly Report");

// Build sample sales data
var salesData = new Dictionary<string, decimal>
{
    { "Product A", 42500.00m },
    { "Product B", 31750.50m },
    { "Product C", 18300.25m }
};

// Write report header
sheet["B2"].Value = $"Sales Report - {DateTime.Now:MMMM yyyy}";
sheet["B3"].Value = $"Generated: {DateTime.Now:g}";

// Write each product row starting at row 6
int currentRow = 6;
decimal totalSales = salesData.Values.Sum();

foreach (var sale in salesData)
{
    sheet[$"B{currentRow}"].Value = sale.Key;
    sheet[$"C{currentRow}"].DecimalValue = sale.Value;
    // Percentage of total formula
    sheet[$"D{currentRow}"].Formula = $"=C{currentRow}/C{currentRow + salesData.Count}*100";
    currentRow++;
}

// Write the total row and apply bold style
sheet[$"C{currentRow}"].DecimalValue = totalSales;
sheet[$"C{currentRow}"].Style.Font.Bold = true;

// Save with a date-stamped filename
string outputPath = $"Reports/Monthly_Report_{DateTime.Now:yyyyMMdd}.xlsx";
workbook.SaveAs(outputPath);
$vbLabelText   $csharpLabel

Cette méthode remplit un modèle standardisé, calcule automatiquement les pourcentages de contribution et préserve l'aspect professionnel du modèle. Les graphiques existants dans le modèle sont mis à jour en fonction des nouvelles valeurs de données, car leurs plages sources restent inchangées.

Lors du transfert de données à partir d'un DataTable ou DataSet, conservez les noms de colonnes et traitez la première ligne comme en-têtes. Pour plus d'informations sur l'importation d'objets DataTable, consultez la documentation IronXL DataTable .

Entrée

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 7 - Modèle Excel d'entrée

Sortie

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 8 - Sortie du rapport mensuel

Comment résoudre les erreurs courantes de modèles ?

Lorsqu'on travaille avec des modèles, plusieurs problèmes surviennent régulièrement. Le tableau suivant associe chaque symptôme à sa cause et à sa solution :

Erreurs courantes et solutions des modèles IronXL
Symptôme Cause probable Résolution
Exception FileNotFoundException lors du chargement Chemin de fichier ou répertoire de travail incorrect Utilisez `Path.Combine(AppContext.BaseDirectory, "template.xlsx")` pour obtenir des chemins fiables.
Formules affichant des valeurs obsolètes Le calcul automatique n'a pas été déclenché après l'écriture. Appelez `sheet.Calculate()` avant d'enregistrer.
Impossible d'ouvrir le modèle protégé par mot de passe Le modèle possède un mot de passe pour un classeur ou une feuille de calcul. Saisissez le mot de passe : `WorkBook.Load("template.xlsx", "password")`
Utilisation élevée de la mémoire avec des données volumineuses L'intégralité du cahier d'exercices est conservée en mémoire pendant l'écriture. Utilisez `workbook.SaveAs()` avec le flux de données et supprimez le classeur après l'enregistrement.
La mise en forme des cellules a été perdue après l'écriture. Écrasement direct de l'objet de style de cellule Définissez uniquement la valeur/formule ; évitez de remplacer l'objet Style entier.
Les données du graphique ne se mettent pas à jour. Écriture en dehors de la plage source du graphique Assurez-vous que les lignes de données restent dans la plage ou le tableau nommé qui alimente le graphique.

Pour les fichiers protégés par mot de passe, fournissez le mot de passe comme deuxième argument à WorkBook.Load. Si les formules ne se mettent pas à jour après l'écriture des données, appelez sheet.Calculate() avant d'appeler workbook.SaveAs(). Pour les grands ensembles de données, supprimez l'objet classeur après l'enregistrement afin de libérer rapidement la mémoire gérée et non gérée.

Des ressources de dépannage supplémentaires sont disponibles dans la documentation de dépannage IronXL et dans la référence de l'API IronXL .

Quelles autres opérations Excel IronXL prend-il en charge ?

Au-delà du remplissage de modèles, IronXL offre un large éventail de fonctionnalités de manipulation Excel qui complètent le flux de travail décrit ci-dessus :

Ces fonctionnalités s'intègrent au remplissage des modèles, de sorte qu'un seul flux de travail peut charger un modèle, le remplir, protéger les cellules de formules sensibles et exporter en une seule étape une copie XLSX et une version PDF.

IronXL s'intègre également parfaitement avec d'autres formats d'échange de données tels que XML, vous permettant d'importer des données structurées, de les transformer et d'exporter le résultat dans un modèle. Pour des intégrations plus avancées avec la génération de rapports à partir de bases de données, consultez les tutoriels de la communauté sur le blog IronXL .

Comment exporter des données Excel vers des modèles de fichiers Excel existants en C# avec IronXL: Image 9 - Licence

Comment démarrer avec IronXL en production ?

IronXL est gratuit pour le développement et les tests. Lorsque vous serez prêt à déployer votre solution, choisissez parmi des options de licence flexibles couvrant les développeurs individuels, les équipes et la redistribution OEM. Consultez la page des licences IronXL pour trouver l'option qui convient à votre projet.

Pour commencer immédiatement, explorez la version d'essai gratuite et exécutez les exemples de code de ce tutoriel avec vos propres modèles. La page NuGet IronXL fournit l'historique des versions et les détails du package. Des discussions communautaires et des exemples supplémentaires sont disponibles sur le dépôt GitHub Iron Software . Pour plus d'informations sur le format de fichier Open XML qui sous-tend les fichiers XLSX, consultez la présentation de la spécification ECMA-376 .

Pour les organisations qui évaluent IronXL par rapport à d'autres solutions, les guides comparatifs IronXL couvrent les différences de fonctionnalités, les modèles de licence et les points de référence en matière de performances afin de vous aider à prendre une décision éclairée.

Questions Fréquemment Posées

Comment exporter des données vers un modèle Excel existant en C# ?

En utilisant IronXL, vous pouvez exporter des données vers un modèle Excel existant en C# sans avoir besoin de Microsoft Office. IronXL vous permet de conserver le formatage, les formules et les mises en page de vos modèles Excel tout en les alimentant avec des données dynamiques.

Quels sont les avantages de l'utilisation d'IronXL pour les exportations de modèles Excel ?

IronXL fournit une solution performante qui préserve la mise en forme des modèles et offre des fonctionnalités avancées, telles que l'insertion de données provenant de diverses sources comme les objets dataset, sans dépendre d'Excel Interop ou de Microsoft Office.

Est-il nécessaire d'avoir Microsoft Office installé pour utiliser IronXL ?

Non, IronXL ne nécessite pas l'installation de Microsoft Office. Il fonctionne de manière indépendante, vous permettant de travailler avec des fichiers et des modèles Excel sans aucune dépendance à l'égard d'Office.

IronXL peut-il gérer des modèles Excel complexes avec des formules ?

Oui, IronXL peut traiter des modèles Excel complexes, y compris ceux contenant des formules, en veillant à ce que toutes les fonctionnalités et mises en page existantes soient préservées lors de l'exportation des données.

Quels types de sources de données IronXL peut-il exporter vers des modèles Excel ?

IronXL peut exporter des données à partir de diverses sources, y compris des objets de jeu de données, ce qui offre une certaine flexibilité pour remplir les modèles Excel avec les données dont vous avez besoin.

Comment IronXL améliore-t-il l'efficacité du flux de travail ?

En permettant l'exportation transparente de données vers des modèles Excel existants sans dépendances Office, IronXL rationalise le processus de génération de rapports, ce qui permet de gagner du temps et d'économiser des ressources.

IronXL est-il adapté à la création de sorties de feuilles Excel professionnelles ?

Oui, IronXL est conçu pour créer des sorties de feuilles Excel professionnelles en préservant l'intégrité de vos modèles et en assurant une intégration de données de haute qualité.

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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me