Formes dans les graphiques avec C++
Ajout de contrôle d’étiquette au graphique
Les étiquettes fournissent un moyen de donner des informations aux utilisateurs sur le contenu d’une feuille de calcul. Aspose.Cells vous permet d’ajouter et de manipuler des étiquettes même dans des graphiques.
La classe Aspose::Cells::Drawing::ShapeCollection fournit une méthode nommée AddLabelInChart, utilisée pour ajouter un contrôle d’étiquette à un graphique. Voici la liste des paramètres utilisés pour la méthode :
- haut – le décalage vertical de l’étiquette depuis le coin supérieur gauche en unités de 1/4000 de la zone du graphique.
- gauche – le décalage horizontal de l’étiquette depuis le coin supérieur gauche en unités de 1/4000 de la zone du graphique.
- hauteur – la hauteur de l’étiquette, en unités de 1/4000 de la zone du graphique.
- largeur – la largeur de l’étiquette, en unités de 1/4000 de la zone du graphique.
La méthode retourne un objet Aspose::Cells::Drawing::Label. La classe Label représente une étiquette dans le graphique. Elle possède quelques membres importants :
- Text (propriété) – spécifie la chaîne de légende d’une étiquette.
- Fill (propriété) - spécifie les attributs de couleur de remplissage.
L’exemple suivant montre comment ajouter une étiquette au graphique. L’exemple utilise un fichier de concepteur (exp_piechart.xls) qui contient un graphique. Nous utilisons ce fichier pour insérer une étiquette dans le graphique. Ci-dessous se trouve le code d’origine pour ajouter une étiquette au graphique. La sortie suivante est générée lors de l’exécution du code.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Path of input excel file
U16String inputFilePath = srcDir + u"chart.xls";
// Path of output excel file
U16String outputFilePath = outDir + u"chart.out.xls";
// Create workbook
Workbook workbook(inputFilePath);
// Get the designer chart in the second sheet
Worksheet sheet = workbook.GetWorksheets().Get(1);
Aspose::Cells::Charts::Chart chart = sheet.GetCharts().Get(0);
// Add a new label to the chart
Label label = chart.GetShapes().AddLabelInChart(100, 100, 350, 900);
// Set the caption of the label
label.SetText(u"A Label In Chart");
// Set the Placement Type, the way the Label is attached to the cells
label.SetPlacement(PlacementType::FreeFloating);
// Save the excel file
workbook.Save(outputFilePath);
std::cout << "Label added to chart successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Ajout d’un contrôle TextBox au graphique
Une façon de mettre en valeur des informations importantes dans un rapport est d’utiliser une zone de texte. Par exemple, entrez du texte pour mettre en valeur le nom de l’entreprise ou pour indiquer la région géographique avec les meilleures ventes. La classe Aspose::Cells::Drawing::ShapeCollection fournit une méthode nommée AddTextBoxInChart, qui est utilisée pour ajouter un contrôle de zone de texte à un graphique. Voici la liste des paramètres utilisés pour la méthode :
- top - le décalage vertical de la zone de texte depuis le coin supérieur gauche en unités de 1/4000 de la zone du graphique.
- left - le décalage vertical de la zone de texte depuis le coin supérieur gauche en unités de 1/4000 de la zone du graphique.
- height - la hauteur de la zone de texte, en unités de 1/4000 de la zone du graphique.
- width - la largeur de la zone de texte, en unités de 1/4000 de la zone du graphique.
La méthode retourne un objet Aspose::Cells::Drawing::TextBox. La classe TextBox représente une zone de texte dans le graphique.
L’exemple suivant montre comment ajouter une zone de texte à un graphique. L’exemple utilise le fichier de concepteur précédent (exp_piechart.xls) qui contient un graphique. Nous utilisons ce fichier pour insérer une zone de texte dans le graphique pour afficher le titre du graphique. Ci-dessous se trouve le code d’origine pour ajouter une zone de texte au graphique.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
// Output directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Path of input excel file
U16String inputFilePath = srcDir + u"chart.xls";
// Path of output excel file
U16String outputFilePath = outDir + u"chart.out.xls";
// Create workbook
Workbook workbook(inputFilePath);
// Get the designer chart in the second sheet
Worksheet sheet = workbook.GetWorksheets().Get(1);
Aspose::Cells::Charts::Chart chart = sheet.GetCharts().Get(0);
// Add a new textbox to the chart
TextBox textbox0 = chart.GetShapes().AddTextBoxInChart(100, 1100, 350, 2550);
// Fill the text
textbox0.SetText(u"Sales By Region");
// Set the font color
textbox0.GetFont().SetColor(Color::Maroon());
// Set the font to bold
textbox0.GetFont().SetIsBold(true);
// Set the font size
textbox0.GetFont().SetSize(14);
// Set font attribute to italic
textbox0.GetFont().SetIsItalic(true);
// Get the fill format of the textbox
FillFormat fillformat = textbox0.GetFill();
// Get the line format type of the textbox
LineFormat lineformat = textbox0.GetLine();
// Set the line weight
lineformat.SetWeight(2);
// Set the dash style to solid
lineformat.SetDashStyle(MsoLineDashStyle::Solid);
// Save the excel file
workbook.Save(outputFilePath);
std::cout << "Textbox added to chart successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Ajout d’une image au graphique
Aspose.Cells vous permet d’insérer des images dans un graphique. Par exemple, ajoutez une image pour mettre en avant ou donner plus de sens à un graphique ou à son contenu, ou insérez un fichier image de marque.
La classe Aspose::Cells::Drawing::ShapeCollection fournit une méthode nommée AddPictureInChart, utilisée pour ajouter un objet image au graphique. Voici la liste des paramètres utilisés pour la méthode :
- top - le décalage vertical de l’image depuis le coin supérieur gauche en unités de 1/4000 de la zone du graphique.
- left - le décalage vertical de l’image depuis le coin supérieur gauche en unités de 1/4000 de la zone du graphique.
- stream - un objet flux qui contient les données de l’image.
- widthScale - l’échelle de la largeur de l’image, une valeur en pourcentage.
- heightScale - l’échelle de la hauteur de l’image, une valeur en pourcentage.
La méthode retourne un objet Aspose::Cells::Drawing::Picture. La classe Picture représente un objet image dans le graphique.
L’exemple suivant montre comment ajouter une image au graphique. L’exemple utilise le fichier de conception précédent (exp_piechart.xls) qui contient un graphique. Nous utilisons ce fichier pour insérer une image dans le graphique. Ci-dessous se trouve le code d’origine pour ajouter une image au graphique.
#include <iostream>
#include <fstream>
#include <vector>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Charts;
using namespace Aspose::Cells::Drawing;
std::vector<uint8_t> ReadFileData(const U16String& filePath) {
std::ifstream file(filePath.ToUtf8(), std::ios::binary | std::ios::ate);
std::streamsize size = file.tellg();
file.seekg(0, std::ios::beg);
std::vector<uint8_t> buffer(size);
if (!file.read(reinterpret_cast<char*>(buffer.data()), size)) {
throw std::runtime_error("Error reading file");
}
return buffer;
}
int main() {
Aspose::Cells::Startup();
U16String srcDir(u"..\\Data\\01_SourceDirectory\\");
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
Workbook workbook(srcDir + u"chart.xls");
std::vector<uint8_t> imageData = ReadFileData(srcDir + u"logo.jpg");
Worksheet sheet = workbook.GetWorksheets().Get(0);
Chart chart = sheet.GetCharts().Get(0);
Vector<uint8_t> data(imageData.data(), static_cast<int32_t>(imageData.size()));
Picture pic0 = chart.GetShapes().AddPictureInChart(50, 50, data, 40, 40);
LineFormat lineFormat = pic0.GetLine();
lineFormat.SetDashStyle(MsoLineDashStyle::Solid);
lineFormat.SetWeight(4);
workbook.Save(outDir + u"chart.out.xls");
std::cout << "Chart modified successfully." << std::endl;
Aspose::Cells::Cleanup();
return 0;
}
Ajout d’une case à cocher dans le graphique
Aspose.Cells vous permet d’insérer des cases à cocher dans une feuille de graphique en utilisant l’énumération MsoDrawingType. L’exemple suivant montre comment ajouter une case à cocher à une feuille de graphique.
L’image suivante montre la feuille de graphique avec la case à cocher dans le fichier de sortie.
Le fichier de sortie généré par le snippet de code suivant est joint à titre de référence.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Drawing;
int main()
{
Aspose::Cells::Startup();
// Source directory path
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
// Create a new workbook
Workbook workbook;
// Add a chart sheet to the workbook
int32_t index = workbook.GetWorksheets().Add(SheetType::Chart);
// Get the newly added chart sheet
Worksheet sheet = workbook.GetWorksheets().Get(index);
// Add a floating chart to the sheet
sheet.GetCharts().AddFloatingChart(ChartType::Column, 0, 0, 1024, 960);
// Add data series to the chart
sheet.GetCharts().Get(0).GetNSeries().Add(U16String(u"{1,2,3}"), false);
// Add a checkbox to the chart
sheet.GetCharts().Get(0).GetShapes().AddShapeInChart(MsoDrawingType::CheckBox, PlacementType::Move, 400, 400, 1000, 600);
// Set text for the checkbox
sheet.GetCharts().Get(0).GetShapes().Get(0).SetText(U16String(u"CheckBox 1"));
// Save the workbook
workbook.Save(outDir + u"InsertCheckboxInChartSheet_out.xlsx");
std::cout << "Checkbox added to chart sheet successfully!" << std::endl;
Aspose::Cells::Cleanup();
}