使用C++在工作表之间复制形状
Contents
 [
      
        Hide
      ]
    有时,你需要在工作表之间复制元素,如图片、图表和其他绘图对象。Aspose.Cells支持此功能。图表、图像和其他对象可以以最高精度进行复制。
本文详细介绍了如何在工作表之间复制形状。
从一个工作表复制图片到另一个工作表
要将图片从一个工作表复制到另一个,请使用以下示例代码中显示的 Worksheet.Pictures.Add 方法。
#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();
}
将图表从一个工作表复制到另一个
以下代码演示了使用 Worksheet.Shapes.AddCopy 方法将图表从一个工作表复制到另一个。
#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();
}
从一个工作表复制控件和其他绘图对象到另一个
若要复制控件和其他绘图对象,请使用 Worksheet.Shapes.AddCopy 方法,如下面的示例所示。
#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();
}