このトピックでは、事前定義された形状を、Infragistics Excel Engine を使って Excel® ワークシートに追加する方法を示します。
Infragistics Excel Engine を使用すると、Worksheet オブジェクト内の事前定義された形状のサブセットを操作できます。
Excel のユーザーの視点からは、形状は 挿入 -> 形状 ドロップダウン メニューからアクセスできます。
これらの全ての形状が Infragistics Excel Engine API 経由で利用できる訳ではありません。
サポートされる事前定義された全ての形状には、対応するクラスが Infragistics.Documents.Excel.PredefinedShapes Namespace で定義されています。各クラスは WorksheetShape クラスから (必ずしも直接ではなく) 派生しています。 WorksheetShape クラスから直接派生していない形状は WorksheetShapeWithText クラスから派生しており、内部に書式設定されたテキストを含む機能を備えます。
以下はサポートされる事前定義された形状およびクラスのリストです。このクラスを通して形状が実装されます。
形状をワークシートに追加するには、事前定義された形状の 1 つを初期化してその位置を設定し、カスタマイズを行ってからそれをワークシートに追加します。詳細手順が以下に説明されています。以下の手順では、サンプル テキストを含む青色の四角形が、Excel グリッドの C3 および K11 のセルの間に置かれています。四角形の側端はそれぞれ、C 列および K 列のちょうど中央に配置されています。
以下は、Microsoft Excel 2010 で表示された最終結果のプレビューです。
手順を完了するには、以下が必要です:
ワークシート項目の 1 つにアクセスできる初期化された Excel ワークブック。
以下はプロセスの概念的概要です。
形状インスタンスの作成
位置とサイズの構成
形状のカスタマイズ
(オプション) 結果を検証します
形状インスタンスを作成します。これには、標準の乗算演算子(* )を使う方法とproduct関数を使う方法の2通りがあります。
形状のコンストラクターの使用
CreatePredefinedShape メソッドの使用
それぞれは以下のコードに示されています
形状のコンストラクターの使用。
Visual Basic の場合:
Dim shape As New RectangleShape()
C# の場合:
RectangleShape shape = new RectangleShape();
CreatePredefinedShape メソッドの使用。
Visual Basic の場合:
Dim shape As RectangleShape =
WorksheetShape.CreatePredefinedShape(PredefinedShapeType.Rectangle)
C# の場合:
RectangleShape shape =
(RectangleShape)WorksheetShape.CreatePredefinedShape(PredefinedShapeType.Rectangle);
位置とサイズを構成します。 これを行うには 2 通りの位置指定メソッドがあります。
セルの使用 (推奨)
トゥウィップの使用
トゥウィップ メソッドは、形状の座標を指定する簡単な方法を提供するために開発されています。両方の配置メソッドは同じ結果で終わります。つまりアンカー セルを使用して形状を配置します (「セルの使用」の動作と同様)。
それぞれは以下のコードに示されています。両方の配置メソッドでは、 PositioningMode プロパティを使用して、セルを含む形状の自動サイズ変更の動作を指定します。
セルの使用。
Excel のグリッドで形状を配置するには、左上と右下のアンカーを指定する必要があります (アンカーはポイントであり、単一セル内で定義されます。たとえば、セル K9 の中央またはセル A0 の右上隅)。
TopLeftCornerCell および TopLeftCornerPosition プロパティは左上隅のアンカーを定義し、 BottomRightCornerCell および BottomRightCornerPosition プロパティは右下隅のアンカーを定義します。
TopLeftCornerPosition プロパティおよび BottomRightCornerPosition プロパティには Point
が含まれます。X と Y 座標は、絶対値 (ピクセル) ではなく相対値 (パーセンテージ) を使用します。たとえば、PointF(50,50) は選択したセルの中央のコントロールの隅を配置します。対応する位置を設定する前に、 TopLeftCornerCell および BottomRightCornerCell を設定することによって、アンカーを選択する必要があります。
..
Visual Basic の場合:
shape.TopLeftCornerCell = sheet.Rows(2).Cells(2)
shape.TopLeftCornerPosition = New System.Windows.Point(50, 100)
shape.BottomRightCornerCell = sheet.Rows(10).Cells(10)
shape.BottomRightCornerPosition = New System.Windows.Point(50, 100)
C# の場合:
shape.TopLeftCornerCell = sheet.Rows[2].Cells[2];
shape.TopLeftCornerPosition = new System.Windows.Point(50, 100);
shape.BottomRightCornerCell = sheet.Rows[10].Cells[10];
shape.BottomRightCornerPosition = new System.Windows.Point(50, 100);
トゥウィップの使用
トゥウィップは ポイントの 1/20 または 1 インチの 1/1440 です。たとえば、96 DPI の解像度では、1 ピクセルの幅と高さは 15 トゥウィップになります。ここで、これらを使用して形状の左上隅と右下隅の位置を指定します。
このメソッドでは、形状の左上隅とサイズは、トゥウィップで形状の座標を含むワークシート オブジェクトおよび四角形オブジェクトを受け入れる SetBoundsInTwips メソッドによって設定されています。
GetBoundsInTwips メソッドを使用して、形状の現在の位置とサイズを取得できます。
SetBoundsInTwips メソッドを使用して、ワークシートの現在の構成に基づいてアンカー セルを設定します。
Visual Basic の場合:
shape.SetBoundsInTwips(sheet, New System.Windows.Rect(150, 150, 3000, 3000))
C# の場合:
shape.SetBoundsInTwips(sheet, new System.Windows.Rect(150, 150, 3000, 3000));
上記のコードでは、形状は左上隅の 10, 10 に配置され、右下隅の 200, 200 に配置されます (96 DPI で)。これは、正しいセルと位置を自動的に設定します。
形状のカスタマイズ
以下のように形状をカスタマイズします。
塗りつぶし色 - 暗青灰色
塗りつぶし色 - 藤紫色
形状テキスト - Infragistics
Visual Basic の場合:
shape.Fill = ShapeFill.FromColor(System.Windows.Media.Colors.SteelBlue)
shape.Outline = ShapeOutline.FromColor(System.Windows.Media.Colors.RoyalBlue)
sheet.Shapes.Add(shape)
Dim ft As New Infragistics.Documents.Excel.FormattedText("infragistics")
shape.Text = ft
ft.GetFont(0, 12).Bold = ExcelDefaultableBoolean.[True]
ft.GetFont(0, 12).Color = New WorkbookColorInfo(Colors.Red)
ft.GetFont(0, 1).Height = 1000
ft.GetFont(5, 1).Height = 1000
C# の場合:
shape.Fill = ShapeFill.FromColor(System.Windows.Media.Colors.SteelBlue);
shape.Outline = ShapeOutline.FromColor(System.Windows.Media.Colors.RoyalBlue);
sheet.Shapes.Add(shape);
Infragistics.Documents.Excel.FormattedText ft = new Infragistics.Documents.Excel.FormattedText("infragistics");
shape.Text = ft;
ft.GetFont(0, 12).Bold = ExcelDefaultableBoolean.True;
ft.GetFont(0, 12).Color = new WorkbookColorInfo(Colors.Red);
ft.GetFont(0, 1).Height = 1000;
ft.GetFont(5, 1).Height = 1000;
詳細は、 Excel の形状のカスタマイズのトピックを参照してください。
テキスト プロパティの設定前に、形状がワークシートに追加されたことに留意してください。形状がワークシートに追加された場合に限り、形状にフォーマット済み文字列を追加できます。
(任意作業) 結果を確認します。
結果を検証するには、アプリケーションをコンパイルおよび実行してから、その手順の出力を Excel ファイルにエクスポートします (Excel でプレビューするため)。