SPREAD for WPF 4.0J - GcSpreadSheet
カスタムオブジェクト用データ型の作成
MESCIUS SPREAD for WPF 4.0J - GcSpreadSheet > 開発者ガイド > セル > カスタムオブジェクト用データ型の作成

Spread for WPFでは、Excelと同様にカスタムオブジェクトのデータ型を設定できます。

カスタムのデータ型により、ユーザーは関連するオブジェクトから重要なデータを容易に抽出できます。

Spreadでは、デフォルトで、データ型が無効に設定されていて、CalcFeatures列挙型を使用することで有効に設定できます。

C#
コードのコピー
GcSpreadSheet.Workbook.WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All;
VB
コードのコピー
GcSpreadSheet.Workbook.WorkbookSet.CalculationEngine.CalcFeatures = CalcFeatures.All

次のサンプルコードは、ID、First Name、Last Name、 Designation、Department、Gender、AgeとYear of Joiningなどのフィールドを持つクラス「Employee」を示します。

C#
コードのコピー
[System.Reflection.DefaultMember("FirstName")]
    public class Employee
    {
        public int ID { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Designation { get; set; }

        public string Department { get; set; } 
        public string Gender { get; set; }
        public int Age { get; set; }
        public int YearOfJoining { get; set; }
    }
VB
コードのコピー
<System.Reflection.DefaultMember("FirstName")>
Public Class Employee
    Public Property ID As Integer
    Public Property FirstName As String
    Public Property LastName As String
    Public Property Designation As String
    Public Property Department As String
    Public Property Gender As String
    Public Property Age As Integer
    Public Property YearOfJoining As Integer
End Class

リッチセル値を表すIRichValueインタフェースを使用してセルにデータ型を追加できます。リッチセル値を表すIRichValueインタフェースを使用してセルにデータ型を追加できます。Spread for WPFは、RichValue<T>という組み込みのクラスも提供します。このクラスは、任意の.NETオブジェクトにラップし、IRichValueインターフェイスを実装します。

ワークシートにデータ型を追加するには、IRangeインターフェイスのValueプロパティを使用することでセル値にクラスオブジェクトと、次の方法を使用することでセルに数式を設定し、クラスのプロパティにアクセスします。

B2.Property1

B2.[The Property 1]

FIELDVALUE(B2, “Property1”)

メモ:名前に空白文字が含まれている場合は、かっこ構文が必要です。

FIELDVALUE関数の詳細については、関数リファレンスの「FIELDVALUE」トピックを参照してください。

次の画像は、カスタムオブジェクトの値はセルB2に設定し、その数式はB3からB8までのセルに設定する方法を示します。

次のサンプルコードは、カスタムオブジェクトのデータ型を作成し、使用可能な構文でそのプロパティにアクセスする方法を示します。

C#
コードのコピー
GrapeCity.CalcEngine.RichValue<Employee> samDaimi = new GrapeCity.CalcEngine.RichValue<Employee>(new Employee()
            {
                ID = 32700,
                FirstName = "Sam",
                LastName = "Daimi",
                Designation = "Team Lead",
                Department = "IT",
                Gender = "M",
                Age = 65,
                YearOfJoining = 2012
            });

            // セル値にオブジェクトを設定します。
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B2"].Value = samDaimi;

            // ドット演算子を使用してプロパティにアクセスするための数式構文。
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B3"].Formula = "B2.LastName";
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B4"].Formula = "B2.Designation";

            // 角かっこを使用します。
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B5"].Formula = "B2.[Department]";
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B6"].Formula = "B2.[Gender]";

            // FIELDVALUE数式関数を使用します。
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B7"].Formula = "FIELDVALUE(B2, \"Age\")";
            GcSpreadSheet.Workbook.ActiveSheet.Cells["B8"].Formula = "FIELDVALUE(B2, \"YearOfJoining\")";
VB
コードのコピー
Dim samDaimi As GrapeCity.CalcEngine.RichValue(Of Employee) = New GrapeCity.CalcEngine.RichValue(Of Employee)(New Employee() With {
            .ID = 32700,
            .FirstName = "Sam",
            .LastName = "Daimi",
            .Designation = "Team Lead",
            .Department = "IT",
            .Gender = "M",
            .Age = 65,
            .YearOfJoining = 2012
        })

        ' セル値にオブジェクトを設定します。
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B2").Value = samDaimi

        ' ドット演算子を使用してプロパティにアクセスするための数式構文。
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B3").Formula = "B2.LastName"
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B4").Formula = "B2.Designation"

        ' 角かっこを使用します。
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B5").Formula = "B2.[Department]"
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B6").Formula = "B2.[Gender]"

        ' FIELDVALUE数式関数を使用します。
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B7").Formula = "FIELDVALUE(B2, ""Age"")"
        GcSpreadSheet.Workbook.ActiveSheet.Cells("B8").Formula = "FIELDVALUE(B2, ""YearOfJoining"")"