日付時刻型セルは、入力用および表示用の書式をそれぞれ設定できます。入力書式はセルが編集状態のときに適用され、表示書式はセルが非編集状態のときに適用されます。日付時刻型セルの入力書式は、書式に合わないデータが入力されないようにユーザーの入力を制限します。

(左)入力書式の例 (右)表示書式の例
書式設定にはキーワードを使用する方法と、フィールド オブジェクトを使用する方法があります。入力および表示書式の設定方法について、それぞれ説明します。
入力書式
キーワードによる入力書式の設定
FieldSet プロパティに入力書式を表す DateFieldSet を設定します。DateFieldSet クラスのコンストラクタでキーワードを使用して書式を設定します。使用できるキーワードは次のとおりです。
| キーワード |
説明 |
| g |
年号の頭文字をアルファベットで表示(M、T、S、H、R) |
| gg |
年号の頭文字を漢字で表示(明、大、昭、平、令) |
| ggg |
年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和) |
| ee |
和暦年を2桁で表示(先頭に0を付ける) |
| yy |
年を2桁で表示(先頭に0を付ける) |
| yyyy |
年を4桁で表示(先頭に0を付ける) |
| MM |
月を2桁の数字で表示(先頭に0を付ける) |
| MMM |
月を省略形で表示 |
| MMMM |
月を正式名称で表示 |
| dd |
日を2桁で表示(先頭に0を付ける) |
| t |
12 時間制で時刻を表示するときに午前 |
| tt |
12 時間制で時刻を表示するときに午前 |
| hh |
時を 12 時間制で表示(先頭に0を付ける) |
| HH |
時を 24 時間制で表示(先頭に0を付ける) |
| mm |
分を表示(先頭に0を付ける) |
| ss |
秒を表示(先頭に0を付ける) |
| ¥ |
キーワードをリテラル文字として表示 |
次のサンプルコードは日付時刻型セルの入力書式をキーワードで設定します。
| C# |
コードのコピー
|
DateTimeCellType dt = new DateTimeCellType();
dt.FieldSet = new DateFieldSet("yyyy年MM月dd日");
GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = dt;
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 0].Value = DateTime.Now;
|
| Visual Basic |
コードのコピー
|
Dim dt As DateTimeCellType = New DateTimeCellType()
dt.FieldSet = New DateFieldSet("yyyy年MM月dd日")
GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = dt
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 0).Value = DateTime.Now
|
フィールド オブジェクトによる入力書式の設定
FieldSet プロパティで入力書式を表す DateFieldSet を取得し Fields プロパティでフィールド オブジェクトのコレクションを参照します。フィールド オブジェクトを追加するにはコレクションの Add メソッドを使用します。入力書式で使用できるフィールドクラスは次のとおりです。これらのクラスを使用してフィールド オブジェクトを作成します。
| フィールド クラス |
説明 |
| DateEraField |
年号入力フィールド。主な設定は次のとおりです。
| AllowDropDownOpen |
年号をドロップダウン リストで表示できるようにするかどうか |
| AutoOpenDropDown |
フィールドにフォーカスが移動したとき、自動的に年号のドロップダウン リストを表示するかどうか |
| Pattern |
年号の表示形式 |
|
| DateEraYearField |
和暦入力フィールド |
| DateYearField |
年入力フィールド。主な設定は次のとおりです。
| TwoDigitYearMax |
西暦を2桁で入力する場合の最後の年 |
| YearDigit |
西暦の表示桁数 |
|
| DateMonthField |
月入力フィールド。主な設定は次のとおりです。
| AllowDropDownOpen |
月をドロップダウン リストで表示できるようにするかどうか |
| AutoOpenDropDown |
月にフォーカスが移動したとき、自動的に月のドロップダウン リストを表示するかどうか |
| Pattern |
月の表示形式 |
|
| DateDayField |
日入力フィールド |
| DateHourField |
24時間制時刻入力フィールド。主な設定は次のとおりです。
| MidnightAs24 |
午前0時を 24 時と表示するかどうか |
|
| DateShortHourField |
12時間制時刻入力フィールド。主な設定は次のとおりです。
| Hour12Mode |
0時を 12 時と表示するかどうか |
|
| DateMinuteField |
分入力フィールド |
| DateSecondField |
秒入力フィールド |
| DateAmPmField |
午前/午後入力フィールド。主な設定は次のとおりです。
| AMDesignator |
午前を表す文字列 |
| PMDesignator |
午後を表す文字列 |
| Pattern |
午前/午後の表示形式 |
|
| DateLiteralField |
リテラル文字フィールド。主な設定は次のとおりです。
|
入力フィールドは、上の表の設定に加えて PromptChar プロパティで未入力のときに表示するプロンプト文字を、SpinIncrement プロパティでスピン機能で増減する値を設定できます。
次のサンプルコードは日付時刻型セルの入力書式をフィールド オブジェクトで設定します。
| C# |
コードのコピー
|
DateTimeCellType dt = new DateTimeCellType();
dt.FieldSet = new DateFieldSet();
dt.FieldSet.Fields.Add(new DateYearField() { YearDigit = YearDigitType.FourDigitYear });
dt.FieldSet.Fields.Add(new DateLiteralField() { Text = "年" });
dt.FieldSet.Fields.Add(new DateMonthField() { Pattern = MonthPattern.Number });
dt.FieldSet.Fields.Add(new DateLiteralField() { Text = "月" });
dt.FieldSet.Fields.Add(new DateDayField());
dt.FieldSet.Fields.Add(new DateLiteralField() { Text = "日" });
GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = dt;
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 0].Value = DateTime.Now;
|
| Visual Basic |
コードのコピー
|
Dim dt As DateTimeCellType = New DateTimeCellType()
dt.FieldSet = New DateFieldSet()
dt.FieldSet.Fields.Add(New DateYearField() With {
.YearDigit = YearDigitType.FourDigitYear
})
dt.FieldSet.Fields.Add(New DateLiteralField() With {
.Text = "年"
})
dt.FieldSet.Fields.Add(New DateMonthField() With {
.Pattern = MonthPattern.Number
})
dt.FieldSet.Fields.Add(New DateLiteralField() With {
.Text = "月"
})
dt.FieldSet.Fields.Add(New DateDayField())
dt.FieldSet.Fields.Add(New DateLiteralField() With {
.Text = "日"
})
GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = dt
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 0).Value = DateTime.Now
|
表示書式
キーワードによる表示書式の設定
DisplayFieldSet プロパティに表示書式を表す DateDisplayFieldSet を設定します。DateDisplayFieldSet クラスのコンストラクタでキーワードを使用して書式を設定します。使用できるキーワードは次のとおりです。
| キーワード |
説明 |
| A |
紀元後を表す"A.D.(Anno Domini)"を表示 |
| g |
年号の頭文字をアルファベットで表示(M、T、S、H、R) |
| gg |
年号の頭文字を漢字で表示(明、大、昭、平、令) |
| ggg |
年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和) |
| e |
和暦年を2桁で表示(先頭に0を付けない) |
| ee |
和暦年を2桁で表示(先頭に0を付ける) |
| E |
和暦年を2桁で表示し開始年を元と表示(先頭に0を付けない)(例)令和元年 |
| EE |
和暦年を2桁で表示し開始年を元と表示(先頭に0を付ける)(例)令和元年 |
| y |
年を2桁で表示(先頭に0を付けない) |
| yy |
年を2桁で表示(先頭に0を付ける) |
| yyy |
年を4桁で表示(先頭に0を付けない) |
| yyyy |
年を4桁で表示(先頭に0を付ける) |
| M |
月を2桁の数字で表示(先頭に0を付けない) |
| MM |
月を2桁の数字で表示(先頭に0を付ける) |
| MMM |
月を省略形で表示 |
| MMMM |
月を正式名称で表示 |
| d |
日を2桁で表示(先頭に0を付けない) |
| dd |
日を2桁で表示(先頭に0を付ける) |
| ddd |
曜日を省略形で表示 |
| dddd |
曜日を正規名称で表示 |
| t |
12 時間制で時刻を表示するときに午前 |
| tt |
12 時間制で時刻を表示するときに午前 |
| h |
時を 12 時間制で表示(先頭に0を付けない) |
| hh |
時を 12 時間制で表示(先頭に0を付ける) |
| H |
時を 24 時間制で表示(先頭に0を付けない) |
| HH |
時を 24 時間制で表示(先頭に0を付ける) |
| m |
分を表示(先頭に0を付けない) |
| mm |
分を表示(先頭に0を付ける) |
| s |
秒を表示(先頭に0を付けない) |
| ss |
秒を表示(先頭に0を付ける) |
| ¥ |
キーワードをリテラル文字として表示 |
次のサンプルコードは日付時刻型セルの表示書式をキーワードで設定します。
| C# |
コードのコピー
|
DateTimeCellType dt = new DateTimeCellType();
dt.DisplayFieldSet = new DateDisplayFieldSet("gggEE年MM月dd日");
GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = dt;
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 0].Value = DateTime.Now;
|
| Visual Basic |
コードのコピー
|
Dim dt As DateTimeCellType = New DateTimeCellType()
dt.DisplayFieldSet = New DateDisplayFieldSet("gggEE年MM月dd日")
GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = dt
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 0).Value = DateTime.Now
|
フィールド オブジェクトによる表示書式の設定
DisplayFieldSet プロパティで表示書式を表す DateDisplayFieldSet を取得し DisplayFields プロパティでフィールドオブジェクトのコレクションを参照します。フィールドオブジェクトを追加するにはコレクションの Add メソッドを使用します。表示書式で使用できるフィールドクラスは次のとおりです。これらのクラスを使用してフィールド オブジェクトを作成します。
| フィールド クラス |
説明 |
| DateADDisplayField |
紀元後を表す A.D. を表示 |
| DateEraDisplayField |
年号表示フィールド。主な設定は次のとおりです。
|
| DateEraYearDisplayField |
和暦表示フィールド。主な設定は次のとおりです。
| ShowLeadingZero |
先頭に0を付けるかどうか |
| ShowTraditionalFirstYear |
開始年を元年と表示するかどうか |
|
| DateYearDisplayField |
年表示フィールド。主な設定は次のとおりです。
| ShowLeadingZero |
先頭に0を付けるかどうか |
| YearDigit |
西暦の表示桁数 |
|
| DateMonthDisplayField |
月表示フィールド。主な設定は次のとおりです。
| Pattern |
月の表示形式 |
| ShowLeadingZero |
先頭に0を付けるかどうか |
|
| DateDayDisplayField |
日表示フィールド。主な設定は次のとおりです。
| ShowLeadingZero |
先頭に0を付けるかどうか |
|
| DateWeekdayDisplayField |
曜日表示フィールド。主な設定は次のとおりです。
|
| DateHourDisplayField |
24時間制時刻表示フィールド。主な設定は次のとおりです。
| MidnightAs24 |
午前0時を 24 時と表示するかどうか |
| ShowLeadingZero |
先頭に0を付けるかどうか |
|
| DateShortHourDisplayField |
12時間制時刻表示フィールド。主な設定は次のとおりです。
| Hour12Mode |
0時を 12 時と表示するかどうか |
| ShowLeadingZero |
先頭に0を付けるかどうか |
|
| DateMinuteDisplayField |
分表示フィールド。主な設定は次のとおりです。
| ShowLeadingZero |
先頭に0を付けるかどうか |
|
| DateSecondDisplayField |
秒表示フィールド。主な設定は次のとおりです。
| ShowLeadingZero |
先頭に0を付けるかどうか |
|
| DateAmPmDisplayField |
午前/午後表示フィールド。主な設定は次のとおりです。
| AMDesignator |
午前を表す文字列 |
| PMDesignator |
午後を表す文字列 |
| Pattern |
午前/午後の表示形式 |
|
| DateSystemFormatDisplayField |
システム書式表示フィールド。Pattern プロパティにシステムで定義された書式指定子を設定します。設定可能な書式指定子は次のとおりです。
システム定義の書式指定子
| キーワード |
説明 |
| d |
短い形式の日付(例:2009/10/01) |
| D |
長い形式の日付(例:2009年10月1日) |
| t |
短い形式の時刻(例:10:30) |
| T |
長い形式の時刻(例:10:30:00) |
| f |
長い形式の日付と短い形式の時刻(例:2009年10月1日 10:30) |
| F |
長い形式の日付と長い形式の時刻(例:2009年10月1日10:30:00) |
| g |
短い形式の日付と短い形式の時刻(例:2009/10/01 10:30) |
| G |
短い形式の日付と長い形式の時刻(例:2009/10/01 10:30:00) |
| M または m |
月日の表示(例:10月1日) |
| O または o |
ラウンドトリップ形式(例:2009-10-01T10:30:00.0000000+09:00) |
| R または r |
RFC1123 の形式(例:Thu, 01 Oct 2009 10:30:00 GMT) |
| S |
ISO 8601 準拠の形式(例:2009-10-01T10:30:00) |
| u |
ユニバーサル形式(例:2009-10-01 10:30:00Z) |
| U |
世界協定時刻(例:2009年10月1日1:30:00) |
| Y または y |
年月の表示(例:2009年10月) |
|
| DateLiteralDisplayField |
リテラル文字フィールド。主な設定は次のとおりです。
|
表示フィールドは、上の表の設定に加えて PromptChar プロパティで未入力のときに表示するプロンプト文字を設定できます。
次のサンプルコードは日付時刻型セルの表示書式をフィールド オブジェクトで設定します。
| C# |
コードのコピー
|
DateTimeCellType dt = new DateTimeCellType();
dt.DisplayFieldSet = new DateDisplayFieldSet();
dt.DisplayFieldSet.DisplayFields.Add(new DateEraDisplayField() { Pattern = EraPattern.EraName });
dt.DisplayFieldSet.DisplayFields.Add(new DateEraYearDisplayField() { ShowTraditionalFirstYear = true });
dt.DisplayFieldSet.DisplayFields.Add(new DateLiteralDisplayField() { Text = "年" });
dt.DisplayFieldSet.DisplayFields.Add(new DateMonthDisplayField() { Pattern = MonthPattern.Number });
dt.DisplayFieldSet.DisplayFields.Add(new DateLiteralDisplayField() { Text = "月" });
dt.DisplayFieldSet.DisplayFields.Add(new DateDayDisplayField());
dt.DisplayFieldSet.DisplayFields.Add(new DateLiteralDisplayField() { Text = "日" });
GcSpreadSheet.Workbook.ActiveSheet.Columns[0].CellType = dt;
GcSpreadSheet.Workbook.ActiveSheet.Cells[0, 0].Value = DateTime.Now;
|
| Visual Basic |
コードのコピー
|
Dim dt As DateTimeCellType = New DateTimeCellType()
dt.DisplayFieldSet = New DateDisplayFieldSet()
dt.DisplayFieldSet.DisplayFields.Add(New DateEraDisplayField() With {
.Pattern = EraPattern.EraName
})
dt.DisplayFieldSet.DisplayFields.Add(New DateEraYearDisplayField() With {
.ShowTraditionalFirstYear = True
})
dt.DisplayFieldSet.DisplayFields.Add(New DateLiteralDisplayField() With {
.Text = "年"
})
dt.DisplayFieldSet.DisplayFields.Add(New DateMonthDisplayField() With {
.Pattern = MonthPattern.Number
})
dt.DisplayFieldSet.DisplayFields.Add(New DateLiteralDisplayField() With {
.Text = "月"
})
dt.DisplayFieldSet.DisplayFields.Add(New DateDayDisplayField())
dt.DisplayFieldSet.DisplayFields.Add(New DateLiteralDisplayField() With {
.Text = "日"
})
GcSpreadSheet.Workbook.ActiveSheet.Columns(0).CellType = dt
GcSpreadSheet.Workbook.ActiveSheet.Cells(0, 0).Value = DateTime.Now
|
関連トピック