Copiar formas entre hojas de cálculo con C++
A veces, necesitas copiar elementos en una hoja de cálculo, por ejemplo, imágenes, gráficos y otros objetos de dibujo, entre hojas de cálculo. Aspose.Cells soporta esta función. Los gráficos, imágenes y otros objetos se pueden copiar con el mayor grado de precisión.
Este artículo te brinda una comprensión detallada de cómo copiar formas entre hojas de cálculo.
Copiar una Imagen de una Hoja de Cálculo a Otra
Para copiar una imagen de una hoja de cálculo a otra, utiliza el método Worksheet.Pictures.Add como se muestra en el código de ejemplo a continuación.
#include <iostream>
#include <memory>
#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"sample.xlsx";
// Path of output excel file
U16String outputFilePath = outDir + u"PictureCopied_out.xlsx";
// Create workbook
Workbook workbook(inputFilePath);
// Get the Picture from the "Picture" worksheet
Worksheet pictureSheet = workbook.GetWorksheets().Get(u"Picture");
Picture picturesource = pictureSheet.GetPictures().Get(0);
// Get picture data
Vector<uint8_t> pictureData = picturesource.GetData();
// Copy the picture to the Result Worksheet
Worksheet resultSheet = workbook.GetWorksheets().Get(u"Result");
resultSheet.GetPictures().Add(picturesource.GetUpperLeftRow(), picturesource.GetUpperLeftColumn(), pictureData, picturesource.GetWidthScale(), picturesource.GetHeightScale());
// Save the Worksheet
workbook.Save(outputFilePath);
std::cout << "Picture copied successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Copiar un gráfico de una hoja de cálculo a otra
El siguiente código demuestra el uso del método Worksheet.Shapes.AddCopy para copiar un gráfico de una hoja de cálculo a otra.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
using namespace Aspose::Cells::Charts;
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"sample.xlsx";
// Path of output excel file
U16String outputFilePath = outDir + u"ChartCopied_out.xlsx";
// Create workbook
Workbook workbook(inputFilePath);
// Get the Chart from the "Chart" worksheet
Worksheet chartSheet = workbook.GetWorksheets().Get(u"Chart");
Chart chartSource = chartSheet.GetCharts().Get(0);
// Get the ChartShape object
ChartShape cshape = chartSource.GetChartObject();
// Copy the Chart to the "Result" Worksheet
Worksheet resultSheet = workbook.GetWorksheets().Get(u"Result");
resultSheet.GetShapes().AddCopy(cshape, 20, 0, 2, 0);
// Save the Workbook
workbook.Save(outputFilePath);
std::cout << "Chart copied successfully!" << std::endl;
Aspose::Cells::Cleanup();
}
Copiar controles y otros objetos de dibujo de una hoja de cálculo a otra
Para copiar controles y otros objetos de dibujo, usa el método Worksheet.Shapes.AddCopy como se muestra en el ejemplo a continuación.
#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"sample2.xlsx";
// Path of output excel file
U16String outputFilePath = outDir + u"ControlsCopied_out.xlsx";
// Create workbook
Workbook workbook(inputFilePath);
// Get the Shapes from the "Control" worksheet
Worksheet controlSheet = workbook.GetWorksheets().Get(u"Control");
ShapeCollection shapes = controlSheet.GetShapes();
// Copy the Textbox to the Result Worksheet
Worksheet resultSheet = workbook.GetWorksheets().Get(u"Result");
resultSheet.GetShapes().AddCopy(shapes.Get(0), 5, 0, 2, 0);
// Copy the Oval Shape to the Result Worksheet
resultSheet.GetShapes().AddCopy(shapes.Get(1), 10, 0, 2, 0);
// Save the Worksheet
workbook.Save(outputFilePath);
std::cout << "Shapes copied successfully!" << std::endl;
Aspose::Cells::Cleanup();
}