Copy Shapes between Worksheets
Sometimes, you need to copy elements on a worksheet, for example, pictures, charts and other drawing objects, between worksheets. Aspose.Cells for Python via .NET supports this feature. Charts, images, and other objects can be copied with the highest degree of precision.
This article gives you a detailed understanding of how to copy shapes between worksheets.
Copying a Picture from one Worksheet to Another
To copy a picture from one worksheet to another, use the Worksheet.pictures.add method as shown in the sample code below.
from aspose.cells import Workbook | |
from io import BytesIO | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# The path to the documents directory. | |
dataDir = RunExamples.GetDataDir(".") | |
# Open the template file | |
workbook = Workbook(dataDir + "sample.xlsx") | |
# Get the Picture from the "Picture" worksheet. | |
picturesource = workbook.worksheets.get("Picture").pictures[0] | |
# Save Picture to Memory Stream | |
ms = BytesIO(picturesource.data) | |
# Copy the picture to the Result Worksheet | |
workbook.worksheets.get("Result").pictures.add(picturesource.upper_left_row, picturesource.upper_left_column, ms, picturesource.width_scale, picturesource.height_scale) | |
# Save the Worksheet | |
workbook.save(dataDir + "PictureCopied_out.xlsx") |
Copy a Chart from one Worksheet to Another
The following code demonstrates the use of Worksheet.shapes.add_copy method to copy a chart from one worksheet to another.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# Open the template file | |
workbook = Workbook(dataDir + "sample.xlsx") | |
# Get the Chart from the "Chart" worksheet. | |
chartsource = workbook.worksheets.get("Chart").charts[0] | |
cshape = chartsource.chart_object | |
# Copy the Chart to the Result Worksheet | |
workbook.worksheets.get("Result").shapes.add_copy(cshape, 20, 0, 2, 0) | |
# Save the Worksheet | |
workbook.save(dataDir + "ChartCopied_out.xlsx") |
Copy Controls and Other Drawing Objects from One Worksheet to Another
To copy controls and other drawing objects, use the Worksheet.shapes.add_copy method as shown in the example below.
from aspose.cells import Workbook | |
# For complete examples and data files, please go to https:# github.com/aspose-cells/Aspose.Cells-for-.NET | |
# Open the template file | |
workbook = Workbook(dataDir + "sample2.xlsx") | |
# Get the Shapes from the "Control" worksheet. | |
shape = workbook.worksheets.get("Control").shapes | |
# Copy the Textbox to the Result Worksheet | |
workbook.worksheets.get("Result").shapes.add_copy(shape[0], 5, 0, 2, 0) | |
# Copy the Oval Shape to the Result Worksheet | |
workbook.worksheets.get("Result").shapes.add_copy(shape[1], 10, 0, 2, 0) | |
# Save the Worksheet | |
workbook.save(dataDir + "ControlsCopied_out.xlsx") |