Spread Windows Forms 8.0 Product Documentation > Developer's Guide > Understanding the Spreadsheet Objects > Working with Sheets > Copying and Inserting a Sheet |
You can copy and insert a sheet to the same Spread component or another Spread component on the form. There is no built-in way to copy the sheet, but with the code given below you can easily create your own CopySheet method. To copy a sheet and insert it in the component, simply create a new method, called CopySheet, as shown here and then use the Add or Insert methods in the SheetViewCollection class.
After calling CopySheet, use either SheetViewCollection.Add or SheetViewCollection.Insert to put it into a Spread component (the same one or a different one).
This also copies all the shapes on that sheet.
You should note that copying a sheet this way also copies the NamedStyleCollection in the sheet, and creates separate copies of any NamedStyle objects in the collection that are private to the copy and not shared with the original NamedStyleCollection in the copied sheet. If you want to keep the named styles shared, you can assign the NamedStyleCollection you want to share to the NamedStyles property of the copy. You might also want to temporarily remove the NamedStyleCollection from the sheet being copied in this case, so that it is not copied unnecessarily. This can be done by simply assigning the NamedStyleCollection to a variable, then setting the NamedStyles property to Nothing (null in C#), then making the copy, then assigning the variable back to the NamedStyles property.
The Spread Designer can be used to copy and paste a sheet at design time. Right-click on the sheet tab icon in the designer to bring up the Copy, Cut, and Paste context menu. The SpreadActions class has options for the clipboard copy, cut, and paste of a sheet.This is the code for the CopySheet method.
C# |
Copy Code
|
---|---|
public FarPoint.Win.Spread.SheetView CopySheet(FarPoint.Win.Spread.SheetView sheet) { FarPoint.Win.Spread.SheetView newSheet = null; if (sheet != null ) { newSheet = FarPoint.Win.Serializer.LoadObjectXml(GetType(FarPoint.Win.Spread.SheetView), FarPoint.Win.Serializer.GetObjectXml(sheet, "CopySheet"), "CopySheet"); } return newSheet; } |
VB |
Copy Code
|
---|---|
Public Function CopySheet(sheet As FarPoint.Win.Spread.SheetView) As FarPoint.Win.Spread.SheetView Dim newSheet as FarPoint.Win.Spread.SheetView = Nothing If Not IsNothing(sheet) Then newSheet = FarPoint.Win.Serializer.LoadObjectXml(GetType(FarPoint.Win.Spread.SheetView), FarPoint.Win.Serializer.GetObjectXml(sheet, "CopySheet"), "CopySheet") End If Return newSheet End Function |