MESCIUS SPREAD for Windows Forms 17.0J
シートのコピーと挿入

同一のコントロール、またはフォーム上の別のコントロールに、シートをコピーおよび挿入できます。シートをコピーするための組み込みの機能はありませんが、以下のコードを使用して、独自のCopySheetメソッドを簡単に作成できます。詳細については、「[新しいスタイル]シートをコピーする方法」をご参考ください。 

あるいは、独自のカスタム CopySheet メソッドを作成して、シートをコピーすることもできます。このような場合は、コピーしたシートをコントロールに挿入するには、CopySheetメソッドを呼び出した後に、FpSpreadクラスのSheetsプロパティが参照するSheetViewCollectionクラスのAddまたはInsertメソッドを使用します。

LegacyBehaviorsプロパティがStyleを含む場合に有効です。

サンプルコード

次のサンプルコードは、CopySheetメソッドを作成します。

C#
コードのコピー
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;
 }
Visual Basic
コードのコピー
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
  • シート上のすべてのシェイプもコピーされます。
  • シートがもつ名前付きスタイルのコレクションを表すNamedStyleCollectionオブジェクトもコピーされます。コレクション内のすべてのNamedStyleオブジェクトはシートに固有で、コピー元のシートのNamedStyleCollectionオブジェクトとは共有されません。
  • 2つのシートで名前付きスタイルを共有するには、コピー元のNamedStyleCollectionオブジェクトを、コピー先のNamedStylesプロパティに割り当てます。このとき、対象のNamedStyleCollectionコレクションが不要にコピーされないよう、コピー元シートから一時的に退避する処理も可能です。NamedStyleCollectionオブジェクトを一時的に変数に割り当て、コピー元のNamedStylesプロパティをnull(Nothing)に設定します。そして、コピーを作成してから、変数をコピー元のNamedStylesプロパティに再度割り当てます。
  • SpreadActionsクラスには、クリップボード経由のシートのコピー、切り取り、および貼り付けオプションが含まれます。任意のキー入力にシートのコピー、切り取り、ペーストの操作を割り当てられます。詳しくは「キーボード操作」を参照してください。

コピーしたシートをコントロールに挿入するには、CopySheetメソッドを呼び出した後に、FpSpreadクラスのSheetsプロパティが参照するSheetViewCollectionクラスのAddまたはInsertメソッドを使用します。

SPREAD デザイナの使用

SPREADデザイナのシートタブアイコンを右クリックすると、[コピー]、[切り取り]、および[貼り付け]コンテキストメニューが表示され、設計時にシートのコピーおよび貼り付けを行えます。

数式を含んだシートのコピー

Spread では、セル数式を含むシートをコピーできます。これを行うには、IWorksheets インターフェースの Copy メソッドを使用します。このメソッドを使用すると、セルのコピー先と参照シートの両方を同時にコピーし、コピーされした複数のシート内に参照がを作成できます。

コードの使用

次のサンプル コードは、数式を含むシートをコピーする方法を示しています。

C#
コードのコピー
var sheet2 = fpSpread1.AsWorkbook().Worksheets.Add();
sheet2.ColumnHeader.RowCount = 2;
sheet2.ColumnHeader.Cells["A1"].Value = 5;
sheet2.Cells["A1"].Value = 4;
IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
TestActiveSheet.Cells[0, 0].Formula = "Sum(Sheet2!A1,A2)";
TestActiveSheet.Cells[0, 1].Formula = "Sheet1[#Headers,[A1]]";
fpSpread1.AsWorkbook().Worksheets[0, 1].Copy(0);
Visual Basic
コードのコピー
Dim sheet2 = fpSpread1.AsWorkbook().Worksheets.Add()
sheet2.ColumnHeader.RowCount = 2
sheet2.ColumnHeader.Cells("A1").Value = 5
sheet2.Cells("A1").Value = 4
Dim TestActiveSheet As IWorksheet = fpSpread1.AsWorkbook().ActiveSheet
TestActiveSheet.Cells(0, 0).Formula = "Sum(Sheet2!A1,A2)"
TestActiveSheet.Cells(0, 1).Formula = "Sheet1[#Headers,[A1]]"
fpSpread1.AsWorkbook().Worksheets(0, 1).Copy(0)

UIを使用した数式を含んだシートのコピー

UIを使用してセル数式を含むシートと参照シートをコピーするには、次の手順に従います。

  1. 次のサンプルコードは、実行時にタブストリップ編集が有効になっているSPREAD コントロールをロードし、シートをコピーします。
    C#
    コードのコピー
    fpSpread1.Width = 800;
    fpSpread1.TabStripRatio = 0.8f;
    fpSpread1.TabStrip.Editable = true;
     var sheet2 = fpSpread1.AsWorkbook().Worksheets.Add();
     sheet2.ColumnHeader.RowCount = 2;
     sheet2.ColumnHeader.Cells["A1"].Value = 5;
     sheet2.Cells["A1"].Value = 4;
     IWorksheet TestActiveSheet = fpSpread1.AsWorkbook().ActiveSheet;
     TestActiveSheet.Cells[0, 0].Formula = "Sum(Sheet2!A1,A2)";
     TestActiveSheet.Cells[0, 1].Formula = "Sheet2[#Headers,[A1]]";
    
    Visual Basic
    コードのコピー
    fpSpread1.Width = 800
    fpSpread1.TabStripRatio = 0.8F
    fpSpread1.TabStrip.Editable = True
     Dim sheet2 = fpSpread1.AsWorkbook().Worksheets.Add()
     sheet2.ColumnHeader.RowCount = 2
     sheet2.ColumnHeader.Cells("A1").Value = 5
     sheet2.Cells("A1").Value = 4
     Dim TestActiveSheet As IWorksheet = fpSpread1.AsWorkbook().ActiveSheet
     TestActiveSheet.Cells(0, 0).Formula = "Sum(Sheet2!A1,A2)"
     TestActiveSheet.Cells(0, 1).Formula = "Sheet2[#Headers,[A1]]"
    
  2. タブストリップで、[Ctrl] キーまたは [Shift] キーを押しながら Sheet1 またはSheet2 を選択します。
    次のいずれかの方法でシートをコピーします。
  1. [Ctrl] キーを押しながら、目的の位置までドラッグアンドドロップします。

  1. 選択したシートタブを右クリックしてコンテキストメニューを開き、「移動またはコピー」オプションを選択します。
  2. 移動またはコピー」ダイアログを開きます。
  3. コピーを作成する」 チェックボックスをオンにして [OK]をクリックし、選択したシートをコピーします。

     

 

参照

 

 


© MESCIUS inc. All rights reserved.