Utiliser ICellsDataTableDataSource pour Workbook Designer

Introduction

La création de feuilles de calcul avancées avec intégration automatisée des données peut changer la donne, en particulier dans les applications professionnelles. Dans ce tutoriel, nous verrons comment utiliserICellsDataTableDataSourcepour un concepteur de classeur dans Aspose.Cells pour .NET. Nous vous guiderons dans la création d’une solution simple et lisible par l’homme pour charger des données personnalisées dans un fichier Excel de manière dynamique. Donc, si vous travaillez avec des listes de clients, des données de vente ou tout autre élément similaire, ce guide est fait pour vous !

Prérequis

Pour commencer, assurez-vous de disposer des éléments suivants :

  • Bibliothèque Aspose.Cells pour .NET – Vous pouvez la télécharger à partir deici ou obtenez une version d’essai gratuite.
  • Environnement de développement .NET – Visual Studio est un excellent choix.
  • Compréhension de base de C# – La familiarité avec les classes et la gestion des données vous aidera à suivre. Avant de continuer, assurez-vous que votre environnement de développement est configuré avec les packages nécessaires.

Paquets d’importation

Pour utiliser efficacement Aspose.Cells, vous devez importer les packages essentiels. Vous trouverez ci-dessous une référence rapide pour les espaces de noms requis :

using Aspose.Cells.Rendering;
using Aspose.Cells.WebExtensions;
using System;
using System.Collections;

Étape 1 : définir une classe de données client

Pour commencer, créez un simpleCustomer classe. Cette classe contiendra des informations de base sur les clients, telles queFullName etAddressConsidérez-le comme un moyen de définir la « forme » de vos données.

public class Customer
{
    public Customer(string aFullName, string anAddress)
    {
        FullName = aFullName;
        Address = anAddress;
    }
    public string FullName { get; set; }
    public string Address { get; set; }
}

Étape 2 : Configurer la classe de liste de clients

Ensuite, définissez unCustomerList classe qui étendArrayList . Cette liste personnalisée contiendra des instances deCustomer et permettre un accès indexé à chaque entrée.

public class CustomerList : ArrayList
{
    public new Customer this[int index]
    {
        get { return (Customer)base[index]; }
        set { base[index] = value; }
    }
}

Dans cette étape, nous enveloppons nos données dans un format qu’Aspose.Cells peut reconnaître et traiter.

Étape 3 : créer la classe source de données client

C’est là que les choses deviennent intéressantes. Nous allons créer unCustomerDataSource classe implémentantICellsDataTable pour rendre nos données compatibles avec le concepteur de classeur Aspose.Cells.

public class CustomerDataSource : ICellsDataTable
{
    internal string[] m_Columns;
    internal ICollection m_DataSource;
    private Hashtable m_PropHash;
    private IEnumerator m_IEnumerator;
    private PropertyInfo[] m_Properties;
    public CustomerDataSource(CustomerList customers)
    {
        this.m_DataSource = customers;
        this.m_Properties = customers[0].GetType().GetProperties();
        this.m_Columns = new string[this.m_Properties.Length];
        this.m_PropHash = new Hashtable(this.m_Properties.Length);
        for (int i = 0; i < m_Properties.Length; i++)
        {
            this.m_Columns[i] = m_Properties[i].Name;
            this.m_PropHash.Add(m_Properties[i].Name, m_Properties[i]);
        }
        this.m_IEnumerator = this.m_DataSource.GetEnumerator();
    }
    public string[] Columns => this.m_Columns;
    public int Count => this.m_DataSource.Count;
    public void BeforeFirst()
    {
        this.m_IEnumerator = this.m_DataSource.GetEnumerator();
    }
    public object this[int index] => this.m_Properties[index].GetValue(this.m_IEnumerator.Current, null);
    public object this[string columnName] => ((PropertyInfo)this.m_PropHash[columnName]).GetValue(this.m_IEnumerator.Current, null);
    public bool Next()
    {
        if (this.m_IEnumerator == null)
            return false;
        return this.m_IEnumerator.MoveNext();
    }
}

Cette coutumeCustomerDataSource classe permet à Aspose.Cells d’interpréter chaqueCustomer objet sous forme de ligne dans le fichier Excel.

Étape 4 : Initialiser les données client

Ajoutons maintenant quelques clients à notre liste. C’est ici que nous chargeons les données à écrire dans le classeur. N’hésitez pas à ajouter d’autres entrées si nécessaire.

CustomerList customers = new CustomerList();
customers.Add(new Customer("Thomas Hardy", "120 Hanover Sq., London"));
customers.Add(new Customer("Paolo Accorti", "Via Monte Bianco 34, Torino"));

Dans cet exemple, nous travaillons avec un petit ensemble de données. Cependant, vous pouvez facilement étendre cette liste en chargeant des données à partir d’une base de données ou d’autres sources.

Étape 5 : Charger le classeur

Ouvrons maintenant un classeur Excel existant contenant les marqueurs intelligents nécessaires. Ce classeur servira de modèle et Aspose.Cells remplacera dynamiquement les marqueurs intelligents par les données client.

string sourceDir = "Your Document Directory";
Workbook workbook = new Workbook(sourceDir + "SmartMarker1.xlsx");

Assurez-vous que"SmartMarker1.xlsx" contient des espaces réservés comme&=Customer.FullName et&=Customer.Address où les données doivent être renseignées.

Étape 6 : Configurer le concepteur de classeurs

Maintenant, configurons le concepteur de classeur pour lier notre source de données client aux marqueurs intelligents du classeur.

WorkbookDesigner designer = new WorkbookDesigner(workbook);
designer.SetDataSource("Customer", new CustomerDataSource(customers));

LeSetDataSource méthode lie notreCustomerDataSource aux marqueurs intelligents du classeur. Chaque marqueur est étiqueté&=Customer dans Excel sera désormais remplacé par les données client correspondantes.

Étape 7 : Traiter et enregistrer le classeur

Enfin, traitons le classeur pour remplir les données et enregistrer les résultats.

string outputDir = "Your Document Directory";
designer.Process();
workbook.Save(outputDir + "dest.xlsx");

Ce code déclenche le traitement du marqueur intelligent, remplace tous les espaces réservés par des données et enregistre le résultat sousdest.xlsx.

Conclusion

Félicitations ! Vous avez implémenté avec succèsICellsDataTableDataSource pour un concepteur de classeur utilisant Aspose.Cells pour .NET. Cette approche est idéale pour automatiser le remplissage des données dans les feuilles de calcul, en particulier lorsqu’il s’agit de données dynamiques telles que des listes de clients ou des inventaires de produits. Grâce à ces compétences, vous êtes sur la bonne voie pour créer des applications pilotées par les données qui simplifient la création de rapports basés sur Excel !

FAQ

Qu’est-ce queICellsDataTable in Aspose.Cells?

Il s’agit d’une interface permettant de lier des sources de données personnalisées aux marqueurs intelligents Aspose.Cells pour un remplissage de données dynamique.

Comment puis-je personnaliser les données dans le modèle de classeur ?

Espaces réservés appelés marqueurs intelligents, tels que&=Customer.FullName, sont utilisés. Ces marqueurs sont remplacés par des données réelles lors du traitement.

Aspose.Cells pour .NET est-il gratuit ?

Aspose.Cells propose un essai gratuit, mais l’accès complet nécessite une licence payante. Vérifiez leuressai gratuit ouacheter options.

Puis-je ajouter davantage de données client de manière dynamique ?

Absolument ! Il suffit de remplir leCustomerListavec des entrées supplémentaires avant d’exécuter le programme.

Où puis-je obtenir de l’aide si je suis bloqué ?

Aspose a unForum de soutien où les utilisateurs peuvent poser des questions et obtenir de l’aide de la communauté et de l’équipe Aspose.