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.

todo:image_alt_text

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();
}

Sujets avancés