Manipular posición, tamaño y diseñador de gráficos con C++
Posición y Tamaño del Gráfico
A veces, deseas cambiar la posición o tamaño del gráfico nuevo o existente dentro de la hoja de cálculo. Aspose.Cells proporciona la propiedad Chart.GetChartObject() para lograrlo. Puedes usar sus subpropiedades para redimensionar el gráfico con una nueva altura y ancho o reposicionarlo con nuevas coordenadas X y Y.
Controlar la Posición y Tamaño del Gráfico
Para cambiar la posición (coordenadas X, Y) o el tamaño (altura, ancho) del gráfico, use estas propiedades:
El siguiente ejemplo explica el uso de las API anteriores. Carga el libro existente que contiene un gráfico en su primera hoja de trabajo. Luego redimensiona y reposiciona el gráfico utilizando Aspose.Cells.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
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 first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(1);
// Load the chart from the worksheet
Chart chart = worksheet.GetCharts().Get(0);
// Resize the chart
chart.GetChartObject().SetWidth(400);
chart.GetChartObject().SetHeight(300);
// Reposition the chart
chart.GetChartObject().SetX(250);
chart.GetChartObject().SetY(150);
// Save the workbook
workbook.Save(outputFilePath);
std::cout << "Chart resized and repositioned successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Manipulación de gráficos de diseñador
Hay momentos en los que necesitas manipular o modificar gráficos en archivos de plantillas de diseñador. Aspose.Cells es compatible con la manipulación de contenidos y elementos de gráficos de diseñador. Los datos, los contenidos del gráfico, la imagen de fondo y los formatos se pueden preservar con precisión.
Manipulación de gráficos de diseñador en archivos de plantillas
Para manipular gráficos de diseñador en archivos de plantillas, utiliza la API relacionada con los gráficos. Por ejemplo, puedes usar la propiedad Worksheet.Charts para obtener la colección de gráficos existentes en el archivo de plantilla.
Creación de un gráfico
El siguiente ejemplo muestra cómo crear un gráfico de pirámide. Más adelante manipularemos este gráfico.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Charts;
int main()
{
Aspose::Cells::Startup();
U16String outDir(u"..\\Data\\02_OutputDirectory\\");
Workbook workbook;
int sheetIndex = workbook.GetWorksheets().Add();
Worksheet worksheet = workbook.GetWorksheets().Get(sheetIndex);
worksheet.GetCells().Get(u"A1").PutValue(50);
worksheet.GetCells().Get(u"A2").PutValue(100);
worksheet.GetCells().Get(u"A3").PutValue(150);
worksheet.GetCells().Get(u"B1").PutValue(4);
worksheet.GetCells().Get(u"B2").PutValue(20);
worksheet.GetCells().Get(u"B3").PutValue(50);
int chartIndex = worksheet.GetCharts().Add(ChartType::Pyramid, 5, 0, 15, 5);
Chart chart = worksheet.GetCharts().Get(chartIndex);
chart.GetNSeries().Add(u"A1:B3", true);
workbook.Save(outDir + u"book1.out.xls");
std::cout << "Excel file created successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Manipulación del gráfico
El siguiente ejemplo muestra cómo manipular el gráfico existente. En este ejemplo, modificamos el gráfico creado anteriormente. En la salida generada, se observa que la etiqueta de fecha de un punto de datos se ha establecido en ‘Reino Unido, 30K’.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Charts;
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"piechart.xls";
// Path of output excel file
U16String outputFilePath = outDir + u"output.xls";
// Open the existing file
Workbook workbook(inputFilePath);
// Get the designer chart in the second sheet
Worksheet sheet = workbook.GetWorksheets().Get(1);
Chart chart = sheet.GetCharts().Get(0);
// Get the data labels in the data series of the third data point
DataLabels datalabels = chart.GetNSeries().Get(0).GetPoints().Get(2).GetDataLabels();
// Change the text of the label
datalabels.SetText(u"Unided Kingdom, 400K ");
// Save the excel file
workbook.Save(outputFilePath);
std::cout << "Data label text updated successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Manipulación de un gráfico de líneas en la plantilla de diseñador
En este ejemplo, manipularemos un gráfico de líneas. Agregaremos algunas series de datos al gráfico existente y cambiaremos sus colores de línea.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Charts;
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"Book1.xlsx";
// Path of output excel file
U16String outputFilePath = outDir + u"output.xls";
// Create workbook
Workbook workbook(inputFilePath);
// Get the designer chart in the first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
Chart chart = worksheet.GetCharts().Get(0);
// Add the third data series to it
chart.GetNSeries().Add(U16String(u"{60, 80, 10}"), true);
// Add another data series (fourth) to it
chart.GetNSeries().Add(U16String(u"{0.3, 0.7, 1.2}"), true);
// Plot the fourth data series on the second axis
chart.GetNSeries().Get(3).SetPlotOnSecondAxis(true);
// Change the Border color of the second data series
chart.GetNSeries().Get(1).GetBorder().SetColor(Color::Green());
// Change the Border color of the third data series
chart.GetNSeries().Get(2).GetBorder().SetColor(Color::Red());
// Make the second value axis visible
chart.GetSecondValueAxis().SetIsVisible(true);
// Save the excel file
workbook.Save(outputFilePath);
std::cout << "Chart modified and saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
}