Créer des fichiers Excel en C++

Auparavant, j’ai écrit un article sur la façon d’implémenter les fonctionnalités d’automatisation d’Excel et de créer des fichiers Excel XLS/XLSX à partir de zéro à l’aide de C#. Aujourd’hui, je vais vous montrer comment créer des classeurs Excel, insérer des données dans des feuilles de calcul Excel, calculer des formules et créer des graphiques et des tableaux dans des feuilles de calcul à l’aide de C++. Toutes les fonctionnalités d’automatisation des feuilles de calcul seront alimentées par l’API Excel C++ - Aspose.Cells for C++.

Aspose.Cells for C++ est une bibliothèque C++ native qui vous permet de créer, lire, analyser et convertir des feuilles de calcul sans avoir besoin de Microsoft Excel. Il fournit un ensemble complet de fonctionnalités d’automatisation Excel qui peuvent être utilisées pour générer et manipuler des feuilles de calcul XLS/XLSX. Dans cet article, nous aborderons les fonctionnalités suivantes de la création de fichiers Excel XLS/XLSX à partir de zéro.

API de tableur Excel C++ - Installation

Vous pouvez télécharger le package complet de fichiers de bibliothèque d’Aspose.Cells for C++ à partir de la section Téléchargements. Le package contient également un exemple d’application de console prête à l’emploi.

Créer des fichiers Excel (XLS/XLSX) à l’aide de C++

Commençons par créer un classeur Excel XLSX simple à partir de zéro. Un classeur est composé d’une ou plusieurs feuilles de calcul et chaque feuille de calcul contient les données sous forme de lignes et de colonnes. Par conséquent, pour créer une feuille de calcul Excel, vous devez d’abord créer un classeur, puis y ajouter des feuilles de calcul. Voici les étapes pour créer un fichier Excel à l’aide de Aspose.Cells for C++.

L’exemple de code suivant montre comment créer un fichier Excel XLSX à l’aide de C++.

/*create a new workbook*/
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

/*get the first worksheet*/
intrusive_ptr<IWorksheetCollection> wsc = wb->GetIWorksheets();
intrusive_ptr<IWorksheet> ws = wsc->GetObjectByIndex(0);

/*get cell(0,0)*/
intrusive_ptr<ICells> cells = ws->GetICells();
intrusive_ptr<ICell> cell = cells->GetObjectByIndex(0, 0);

/*write "Hello World" to cell(0,0) of the first sheet*/
intrusive_ptr<String> str = new String("Hello World!");
cell->PutValue(str);

/*save this workbook to resultFile folder*/
wb->Save(resultPath->StringAppend(new String("workbook.xlsx")));

Classeur Excel

Voici la capture d’écran du classeur Excel que nous venons de créer.

Créer Excel XLSX en C++

Ajouter des données à une feuille de calcul Excel à l’aide de C++

Dans l’exemple précédent, nous avons vu comment créer un simple fichier Excel et insérer une valeur dans une cellule particulière à l’aide d’un index de ligne et de colonne. Cependant, le plus souvent, les cellules des feuilles de calcul Excel sont identifiées à l’aide de la lettre de colonne et des numéros de ligne tels que A1, A2, B1, etc. Examinons donc l’exemple de la façon d’insérer des données dans la feuille de calcul à l’aide des noms de cellule. Le processus ne diffère que par l’ajout de valeur à la cellule et toutes les autres étapes de création du classeur Excel et des feuilles de calcul sont les mêmes.

L’exemple de code suivant montre comment créer un classeur Excel XLSX et y insérer des données à l’aide de C++.

//Chemin du fichier excel de sortie
StringPtr outputData = resultPath->StringAppend(new String("outputData.xlsx"));

//Lire le fichier Excel d'entrée
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

//Accéder à la deuxième feuille de calcul dans le fichier Excel
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

//Ajout d'une valeur de chaîne à la cellule
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue("Hello World");

//Ajouter une valeur double à la cellule
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(20.5);

//Ajouter une valeur entière à la cellule
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(15);

//Ajouter une valeur booléenne à la cellule
worksheet->GetICells()->GetObjectByIndex(new String("A4"))->PutValue(true);

//Réglage du format d'affichage de la date
intrusive_ptr<ICell> cell = worksheet->GetICells()->GetObjectByIndex(new String("A5"));
intrusive_ptr<IStyle> style = cell->GetIStyle();
style->SetNumber(15);
cell->SetIStyle(style);

//Enregistrer le classeur
workbook->Save(outputData);

Calculer des formules de classeur à l’aide de C++

La définition de formules dans les classeurs Excel est une fonctionnalité étonnante pour effectuer des calculs sur des données. Il est plus facile d’effectuer des calculs complexes sur les données de manière efficace et efficiente. Voici les étapes pour définir et calculer des formules dans des feuilles de calcul Excel.

L’exemple de code suivant montre comment ajouter et calculer des formules dans un classeur Excel XLSX à l’aide de C++.

//Créer un nouveau classeur
intrusive_ptr<IWorkbook> wb = Factory::CreateIWorkbook();

//Obtenir la première feuille de calcul créée par défaut
intrusive_ptr<IWorksheet> ws = wb->GetIWorksheets()->GetObjectByIndex(0);

//Ajouter une valeur à la cellule "A1"
intrusive_ptr<ICell> cell = ws->GetICells()->GetObjectByIndex(new String("A1"));
cell->PutValue(5);

//Ajouter une valeur à la cellule "A2"
cell = ws->GetICells()->GetObjectByIndex(new String("A2"));
cell->PutValue(15);

//Ajouter une valeur à la cellule "A3"
cell = ws->GetICells()->GetObjectByIndex(new String("A3"));
cell->PutValue(25);

//Ajout de la formule SOMME à la cellule "A4"
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
cell->SetFormula(new String("=SUM(A1:A3)"));

//Calcul des résultats de formules
wb->CalculateFormula();

//Obtenez la valeur calculée de la cellule "A4" et imprimez-la sur la console
cell = ws->GetICells()->GetObjectByIndex(new String("A4"));
StringPtr sCalcuInfo = new String(L"Calculated Value of Cell A4: ");
Console::WriteLine(sCalcuInfo->StringAppend(cell->GetStringValue()));

Créer des tableaux dans une feuille de calcul Excel à l’aide de C++

Les tableaux des feuilles de calcul Excel sont utilisés pour organiser un groupe de données situées dans une plage de cellules. Les tableaux vous aident également à gérer différents types de listes dans les feuilles de calcul. Voici les étapes pour créer un tableau dans la feuille de calcul Excel.

  • Créez un nouveau classeur Excel à l’aide de la classe IWorkbook.
  • Accédez à la feuille de calcul par défaut dans l’objet IWorksheet ou ajoutez-en une nouvelle.
  • Insérez la valeur/données dans les cellules de la même manière que nous l’avons fait dans l’exemple précédent.
  • Ajoutez la plage de cellules à la collection Lists de la feuille de calcul à l’aide de la méthode IWorksheet->GetIListObjects()->Add().
  • Obtenez la liste dans l’objet IListObject.
  • Appliquez le style à la table à l’aide de la méthode IListObject->SetTableStyleType().
  • Enregistrez le classeur en tant que fichier .xlsx.

L’exemple de code suivant montre comment créer une table dans un fichier Excel XLSX à l’aide de C++.

// Instancier un objet Workbook
intrusive_ptr<IWorkbook>  workbook = Factory::CreateIWorkbook();

// Obtention de la référence de la feuille de calcul par défaut (première)
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Obtention de la collection de cellules de Worksheet
intrusive_ptr<ICells> cells = worksheet->GetICells();

// Définir la valeur des cellules
cells->GetObjectByIndex(new String("A1"))->PutValue("Employee");
cells->GetObjectByIndex(new String("B1"))->PutValue("Quarter");
cells->GetObjectByIndex(new String("C1"))->PutValue("Product");
cells->GetObjectByIndex(new String("D1"))->PutValue("Continent");
cells->GetObjectByIndex(new String("E1"))->PutValue("Country");
cells->GetObjectByIndex(new String("F1"))->PutValue("Sale");

cells->GetObjectByIndex(new String("A2"))->PutValue("David");
cells->GetObjectByIndex(new String("A3"))->PutValue("David");
cells->GetObjectByIndex(new String("A4"))->PutValue("David");
cells->GetObjectByIndex(new String("A5"))->PutValue("David");
cells->GetObjectByIndex(new String("A6"))->PutValue("James"); 

cells->GetObjectByIndex(new String("B2"))->PutValue(1);
cells->GetObjectByIndex(new String("B3"))->PutValue(2);
cells->GetObjectByIndex(new String("B4"))->PutValue(3);
cells->GetObjectByIndex(new String("B5"))->PutValue(4);
cells->GetObjectByIndex(new String("B6"))->PutValue(1); 

cells->GetObjectByIndex(new String("C2"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C3"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C4"))->PutValue("Chai");
cells->GetObjectByIndex(new String("C5"))->PutValue("Maxilaku");
cells->GetObjectByIndex(new String("C6"))->PutValue("Chang"); 

cells->GetObjectByIndex(new String("D2"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D3"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D4"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D5"))->PutValue("Asia");
cells->GetObjectByIndex(new String("D6"))->PutValue("Europe"); 

cells->GetObjectByIndex(new String("E2"))->PutValue("China");
cells->GetObjectByIndex(new String("E3"))->PutValue("India");
cells->GetObjectByIndex(new String("E4"))->PutValue("Korea");
cells->GetObjectByIndex(new String("E5"))->PutValue("India");
cells->GetObjectByIndex(new String("E6"))->PutValue("France"); 

cells->GetObjectByIndex(new String("F2"))->PutValue(2000);
cells->GetObjectByIndex(new String("F3"))->PutValue(500);
cells->GetObjectByIndex(new String("F4"))->PutValue(1200);
cells->GetObjectByIndex(new String("F5"))->PutValue(1500);
cells->GetObjectByIndex(new String("F6"))->PutValue(500);  


// Ajout d'un nouvel objet de liste à la feuille de calcul
worksheet->GetIListObjects()->Add(new String("A1"), new String("F6"), true);
intrusive_ptr<IListObject> listObject = worksheet->GetIListObjects()->GetObjectByIndex(0);

// Ajout du style par défaut au tableau
listObject->SetTableStyleType(TableStyleType_TableStyleMedium10);

// Afficher le total
listObject->SetShowTotals(true);

// Enregistrement du fichier Excel
workbook->Save(resultPath->StringAppend(new String("Excel_Table.xlsx")));

Classeur Excel avec tableau

Créer un tableau dans Excel en C++

Créer des graphiques dans une feuille de calcul Excel à l’aide de C++

Les graphiques dans les feuilles de calcul Excel sont utilisés pour visualiser les données à l’aide de différents types d’objets graphiques. Ils nous donnent un aperçu et une compréhension rapides des données, en particulier lorsque les données sont volumineuses. Aspose.Cells for C++ prend en charge une variété de graphiques, notamment Sunburst, Treemap, Histogram, Pyramid, Bubble, Line et beaucoup plus. Voici les étapes pour créer un graphique dans un classeur Excel à l’aide de Aspose.Cells for C++.

  • Créez un nouveau classeur Excel.
  • Accédez à la feuille de calcul souhaitée dans l’objet IWorksheet.
  • Ajoutez un nouveau graphique à la feuille de calcul à l’aide de la méthode IWorksheet->GetICharts()->Add() en transmettant le type de graphique.
  • Accédez au graphique nouvellement ajouté dans l’objet IChart.
  • Définissez la source de données du graphique à l’aide de la méthode IChart->GetNISeries()->Add().
  • Enregistrez le classeur en tant que fichier .xlsx.

L’exemple de code suivant montre comment créer un graphique dans un fichier Excel XLSX à l’aide de C++.

// Chemin du fichier excel de sortie
StringPtr outputChartTypePyramid = resultPath->StringAppend(new String("Exce_Pyramid_Chart.xlsx"));

// Créer un nouveau classeur
intrusive_ptr<IWorkbook> workbook = Factory::CreateIWorkbook();

// Obtenir la première feuille de calcul créée par défaut
intrusive_ptr<IWorksheet> worksheet = workbook->GetIWorksheets()->GetObjectByIndex(0);

// Ajouter des exemples de valeurs aux cellules
worksheet->GetICells()->GetObjectByIndex(new String("A1"))->PutValue(50);
worksheet->GetICells()->GetObjectByIndex(new String("A2"))->PutValue(100);
worksheet->GetICells()->GetObjectByIndex(new String("A3"))->PutValue(150);
worksheet->GetICells()->GetObjectByIndex(new String("B1"))->PutValue(4);
worksheet->GetICells()->GetObjectByIndex(new String("B2"))->PutValue(20);
worksheet->GetICells()->GetObjectByIndex(new String("B3"))->PutValue(50);

// Ajouter un graphique à la feuille de calcul
int chartIndex = worksheet->GetICharts()->Add(Aspose::Cells::Charts::ChartType::ChartType_Pyramid, 5, 0, 20, 8);

// Accéder à l'instance du graphique nouvellement ajouté
intrusive_ptr<Aspose::Cells::Charts::IChart> chart = worksheet->GetICharts()->GetObjectByIndex(chartIndex);

// Ajout de SeriesCollection (source de données du graphique) au graphique allant de la cellule "A1" à "B3"
chart->GetNISeries()->Add(new String("A1:B3"), true);

// Enregistrement du fichier Excel
workbook->Save(outputChartTypePyramid);

Classeur Excel avec graphique

Créer un graphique dans Excel en C++

Conclusion

Dans cet article, nous avons expliqué comment créer des feuilles de calcul MS Excel à partir de zéro en utilisant C++. L’article contient également des instructions étape par étape et des exemples de code sur la façon de créer des tableaux, des graphiques et de calculer des formules dans des feuilles de calcul Excel. Vous pouvez en savoir plus sur d’autres fonctionnalités avancées liées à l’automatisation d’Excel à partir de la documentation de Aspose.Cells for C++.

Article associé