Passer au contenu du pied de page
UTILISATION D'IRONXL

Comment exporter un modèle en C#

Travailler avec des modèles Microsoft Excel simplifie la génération de rapports en préservant la mise en forme, les formules et les agencements tout en intégrant dynamiquement les données. Ce tutoriel montre comment exporter efficacement des données vers des modèles de feuilles de calcul Excel existants en utilisant IronXL, éliminant le besoin de dépendances Microsoft Office ou d'Interop Excel. L'exemple suivant montre comment écrire des données dans des modèles Excel et créer des feuilles Excel professionnelles. Supposons que vous cherchiez un moyen d'exporter des modèles Excel déjà existants en C# sans avoir Microsoft Office installé. Dans ce cas, cette bibliothèque Excel fournit une solution propre et performante avec des fonctionnalités plus avancées qui vous permettent d'insérer des données provenant de diverses sources, y compris des objets set de données.

En plus des classeurs Excel, IronXL s'intègre bien avec d'autres formats d'échange de données tels que les fichiers XML, permettant aux développeurs d'importer, exporter ou transformer facilement des données structurées entre systèmes. Que vous ayez besoin d'écrire des données dans Excel à partir d'une base de données ou de fichiers système, cette bibliothèque prend en charge une intégration transparente avec des applications .NET.

Comment exporter un modèle en C#: Figure 1

Pourquoi utiliser des modèles Excel pour l'exportation de données ?

Les modèles Excel offrent des avantages significatifs 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. Les organisations disposent souvent de modèles standardisés pour les factures, les rapports et les tableaux de bord qui doivent conserver leur conception tout en intégrant des données dynamiques provenant de bases de données, API, ou d'objets de collection tels qu'un tableau de données. Lors de l'application de mise en forme conditionnelle et de mise en forme de cellules à votre fichier de sortie, les modèles garantissent la cohérence entre tous les documents générés au format xlsx.

En remplissant les modèles existants de manière programmée, les développeurs économisent d'innombrables heures de travail de mise en forme et garantissent la cohérence entre tous les documents générés. IronXL rend ce processus transparent en prenant en charge divers formats Excel, y compris les modèles XLSX, XLS, XLSM et XLTX, sans nécessiter d'installation d'Office. Le code source pour ces opérations est simple et facile à mettre en œuvre dans n'importe quel dossier de projet.

Comment exporter un modèle en C#: Figure 2

Configurer IronXL pour les opérations de modèles

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

Install-Package IronXL.Excel

Comment exporter un modèle en C#: Figure 3

Après l'installation, ajoutez l'espace de noms nécessaire à votre fichier C# :

using IronXL;
using IronXL;
Imports IronXL
$vbLabelText   $csharpLabel

IronXL fonctionne de manière indépendante sans nécessiter d'installation de Microsoft Office, ce qui le rend idéal pour les environnements serveur et les applications multiplateformes, y compris les conteneurs Docker et les plateformes cloud. Pour des instructions détaillées sur la configuration et des informations supplémentaires, visitez le guide de démarrage IronXL. La bibliothèque prend en charge .NET Framework, .NET Core, et .NET 5+ sur les environnements Windows, Linux et macOS, ce qui en fait un produit idéal pour les applications .NET.

Comment exporter un modèle en C#: Figure 4 - Fonctionnalités

Charger et remplir des modèles Excel

Charger un modèle existant est simple avec la méthode WorkBook.Load() d'IronXL. L'exemple suivant montre comment ouvrir un modèle et le remplir avec des données, en traitant la première ligne comme des en-têtes et en gérant efficacement les noms de colonnes :

// Load the existing Excel template for data import
WorkBook workbook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Populate specific worksheet cells with data
sheet["B2"].Value = "Q4 2024 Sales Report";
sheet["C4"].StringValue = DateTime.Now.ToString("MMMM dd, yyyy");
sheet["C6"].DecimalValue = 125000.50m;
sheet["C7"].DecimalValue = 98500.75m;
sheet["C8"].Formula = "=C6-C7"; // Profit calculation
// Populate a range with array 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 template
workbook.SaveAs("Q4_Sales_Report.xlsx");
// Load the existing Excel template for data import
WorkBook workbook = WorkBook.Load("ReportTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Populate specific worksheet cells with data
sheet["B2"].Value = "Q4 2024 Sales Report";
sheet["C4"].StringValue = DateTime.Now.ToString("MMMM dd, yyyy");
sheet["C6"].DecimalValue = 125000.50m;
sheet["C7"].DecimalValue = 98500.75m;
sheet["C8"].Formula = "=C6-C7"; // Profit calculation
// Populate a range with array 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 template
workbook.SaveAs("Q4_Sales_Report.xlsx");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ce code charge un modèle pré-conçu, conserve toute la mise en forme existante et remplit des cellules spécifiques avec de nouvelles données. La propriété DecimalValue garantit que les données numériques conservent un formatage approprié. Les cellules de formule se recalculent automatiquement lorsque les données adjacentes changent, préservant la logique de calcul du modèle. En savoir plus sur le travail avec les formules Excel dans IronXL.

Entrée

Comment exporter un modèle en C#: Figure 5 - Exemple de saisie de modèle

Sortie

Comment exporter un modèle en C#: Figure 6 - Sortie de chargement du modèle Excel

Travailler avec des espaces réservés de modèle

De nombreux modèles utilisent des marqueurs de texte espace réservé qui doivent être remplacés par des données réelles. IronXL gère efficacement ce scénario par le biais de l'itération de cellules et du remplacement de texte. Lorsque vous devez écrire des données dans des modèles Excel et insérer un contenu dynamique, cette approche offre une flexibilité maximale :

// Load template with placeholders
WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Find and replace placeholder text in cells
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-2024-001");
}
// Populate line items dynamically
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");
// Load template with placeholders
WorkBook workbook = WorkBook.Load("InvoiceTemplate.xlsx");
WorkSheet sheet = workbook.DefaultWorkSheet;
// Find and replace placeholder text in cells
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-2024-001");
}
// Populate line items dynamically
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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette approche recherche des marqueurs d'espaces réservés dans une plage spécifiée et les remplace par des valeurs réelles. Le formatage du modèle, y compris les polices, couleurs et bordures, reste intact tout au long du processus. Pour des scénarios plus avancés, explorez les options de style de cellule d'IronXL pour modifier dynamiquement le formatage si nécessaire.

Exemple d'implémentation dans le monde réel

Voici un exemple complet générant un rapport de ventes mensuel à partir d'un modèle Excel existant avec des cellules préformatées. Ce code montre comment gérer les événements à partir de l'expéditeur d'objet et rédiger des rapports complets. Lorsque vous travaillez avec des données d'une base de données système ou de collections en mémoire, vous pouvez exporter efficacement des données vers Excel en utilisant un nouveau tableau de données ou un ensemble de données existant pour remplir des modèles :

public void GenerateMonthlyReport(string templatePath, Dictionary<string, decimal> salesData)
{
    // Load the existing template file
    WorkBook workbook = WorkBook.Load(templatePath);
    WorkSheet sheet = workbook.GetWorkSheet("Monthly Report");
    // Set report header information
    sheet["B2"].Value = $"Sales Report - {DateTime.Now:MMMM yyyy}";
    sheet["B3"].Value = $"Generated: {DateTime.Now:g}";
    // Populate sales data starting from row 6
    int currentRow = 6;
    decimal totalSales = 0;
    foreach (var sale in salesData)
    {
        sheet[$"B{currentRow}"].Value = sale.Key;  // Product name
        sheet[$"C{currentRow}"].DecimalValue = sale.Value;  // Sales amount
        sheet[$"D{currentRow}"].Formula = $"=C{currentRow}/C${salesData.Count + 6}*100"; // Percentage formula
        totalSales += sale.Value;
        currentRow++;
    }
    // Update total row with sum
    sheet[$"C{currentRow}"].DecimalValue = totalSales;
    sheet[$"C{currentRow}"].Style.Font.Bold = true;
    // Save with timestamp
    string outputPath = $"Reports/Monthly_Report_{DateTime.Now:yyyyMMdd}.xlsx";
    workbook.SaveAs(outputPath);
}
public void GenerateMonthlyReport(string templatePath, Dictionary<string, decimal> salesData)
{
    // Load the existing template file
    WorkBook workbook = WorkBook.Load(templatePath);
    WorkSheet sheet = workbook.GetWorkSheet("Monthly Report");
    // Set report header information
    sheet["B2"].Value = $"Sales Report - {DateTime.Now:MMMM yyyy}";
    sheet["B3"].Value = $"Generated: {DateTime.Now:g}";
    // Populate sales data starting from row 6
    int currentRow = 6;
    decimal totalSales = 0;
    foreach (var sale in salesData)
    {
        sheet[$"B{currentRow}"].Value = sale.Key;  // Product name
        sheet[$"C{currentRow}"].DecimalValue = sale.Value;  // Sales amount
        sheet[$"D{currentRow}"].Formula = $"=C{currentRow}/C${salesData.Count + 6}*100"; // Percentage formula
        totalSales += sale.Value;
        currentRow++;
    }
    // Update total row with sum
    sheet[$"C{currentRow}"].DecimalValue = totalSales;
    sheet[$"C{currentRow}"].Style.Font.Bold = true;
    // Save with timestamp
    string outputPath = $"Reports/Monthly_Report_{DateTime.Now:yyyyMMdd}.xlsx";
    workbook.SaveAs(outputPath);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cette méthode accepte les données de vente et remplit un modèle standardisé, calculant automatiquement les pourcentages et les totaux tout en préservant l'apparence professionnelle du modèle. Les graphiques existants et la mise en forme conditionnelle dans le modèle sont automatiquement mis à jour en fonction des nouvelles données. Remarque : Lors du transfert de données vers Excel à partir d'objets DataTable ou de collections de jeux de données, conservez les noms de colonnes et traitez la première ligne comme des en-têtes.

L'approche suivante fonctionne de manière transparente, que vous ayez besoin d'écrire des données à partir de dictionnaires, d'insérer des valeurs à partir de requêtes de base de données ou d'exporter des données vers Excel à partir de diverses sources système. Il suffit de sauvegarder le fichier de sortie dans votre dossier désigné pour un accès facile. Pour plus d'informations sur le travail avec les DataTables, consultez la documentation d'importation des DataTable et les exemples de code source.

Entrée

Comment exporter un modèle en C#: Figure 7 - Saisie de modèle Excel

Sortie

Comment exporter un modèle en C#: Figure 8 - Sortie de rapport mensuel

Résolution des problèmes courants

Lorsque vous travaillez avec des modèles, assurez-vous que les chemins de fichiers sont corrects et que les modèles ne sont pas verrouillés par d'autres processus. Pour les modèles protégés par mot de passe, utilisez WorkBook.Load("template.xlsx", "mot de passe"). Si les formules ne se mettent pas à jour, appelez sheet.Calculate() après avoir rempli les données. Pour les ensembles de données volumineux, envisagez d'utiliser workbook.SaveAs() avec des options de streaming pour optimiser l'utilisation de la mémoire. Consultez la documentation sur le dépannage pour des informations supplémentaires et des solutions lors du travail avec des fichiers au format xlsx sur différents environnements système.

Conclusion

IronXL simplifie la population de modèles Excel en C#, préservant une mise en forme complexe tout en intégrant efficacement des données dynamiques provenant de diverses sources, y compris des objets set de données et des connexions de base de données. Cette approche réduit considérablement le temps de développement et maintient la cohérence des documents à travers les flux de travail de reporting de votre organisation. Que vous ayez besoin d'écrire des données dans Excel, d'insérer de nouvelles lignes, ou d'appliquer la mise en forme des cellules à votre fichier de sortie, IronXL fournit les outils nécessaires pour l'automatisation professionnelle d'Excel dans des applications .NET.

Prêt à rationaliser votre reporting Excel ? Commencez votre essai gratuit d'IronXL pour tester la population de modèles dans votre projet, ou explorez plus de tutoriels d'automatisation Excel pour améliorer votre flux de travail. Pour le déploiement en production, consultez les options de licence adaptées à vos besoins.

Comment exporter un modèle en C#: Figure 9 - License

Questions Fréquemment Posées

Quel est l'avantage d'utiliser IronXL pour exporter des données vers un modèle Excel ?

IronXL vous permet d'exporter des données vers un modèle Excel existant sans avoir besoin de Microsoft Office ou d'Excel Interop, préservant efficacement le formatage, les formules et les mises en page.

Puis-je exporter des données à partir d'un objet de jeu de données vers un modèle Excel en utilisant IronXL ?

Oui, IronXL prend en charge l'exportation de données à partir de diverses sources, y compris les objets de jeu de données, vers des modèles Excel tout en maintenant la structure existante du modèle.

Microsoft Office est-il requis pour utiliser IronXL pour les opérations Excel ?

Non, IronXL fonctionne indépendamment de Microsoft Office, fournissant une solution claire et performante pour travailler avec des modèles Excel en C#.

Comment IronXL gère-t-il le formatage lors de l'exportation de données vers des modèles Excel ?

IronXL préserve le formatage, les formules et la mise en page existants de vos modèles Excel, garantissant que vos données sont exportées de manière transparente dans la structure souhaitée.

Quel type de sorties Excel IronXL peut-il créer?

IronXL peut créer des sorties de feuilles Excel professionnelles en écrivant des données dans des modèles et en maintenant l'intégrité du formatage et de la structure d'origine.

IronXL prend-il en charge la population de données dynamique dans les modèles Excel ?

Oui, IronXL prend en charge la population de données dynamique, vous permettant de remplir efficacement des modèles Excel avec des données de diverses sources tout en conservant l'intégrité du modèle.

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

IronXL est capable de gérer des modèles Excel complexes incluant des formules, garantissant que les formules restent intactes et fonctionnelles après l'exportation des données.

Qu'est-ce qui rend IronXL une solution haute performance pour l'exportation de donn\u00e9es vers Excel ?

La capacité d'IronXL à fonctionner indépendamment de Microsoft Office et ses fonctionnalités avancées pour gérer diverses sources de données en font une solution performante pour l'exportation de données vers Excel.

Est-il possible d'exporter des données vers un modèle de feuille de calcul Excel en utilisant C# sans dépendances externes ?

Oui, IronXL vous permet d'exporter des données vers un modèle de feuille de calcul Excel en utilisant C# sans dépendre de dépendances externes comme Microsoft Office.

Comment IronXL simplifie-t-il le processus de génération de rapports dans Excel ?

IronXL simplifie la génération de rapports en permettant aux utilisateurs d'exporter des données directement dans des modèles Excel, préservant le formatage et la mise en page d'origine, et éliminant le besoin d'ajustements manuels.

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