GrapeCity SPREAD for WPF 2.0J
書式設定(標準型セル)

標準型セルに設定する書式は表示用の書式で、ユーザーの入力を制限する機能ではありません。たとえば、開発者が日付の表示書式を設定した場合、標準型セルはユーザーが入力したデータを解析し、日付と判断できる場合に設定された書式を適用します。入力された値が日付と判断できない場合、書式は適用されません。表示書式は FormatString または Formatter プロパティで設定します。それぞれのプロパティを使用した書式の設定方法について説明します。

FormatString による設定

キーワードを使用して書式を設定します。なお、次の構文を使用して1つの表示書式に最大4つの書式を設定できます。

構文

正の数の書式;負の数の書式;ゼロの書式;文字列の書式

#,##0;[Red](#,##0);"ゼロ";"入力:"@ 

書式設定で使用できるキーワードは次のとおりです。

 

文字列のキーワード

キーワード 説明
""(2重引用符で囲む) 文字列と数値の両方を表示する場合、文字列を2重引用符で囲みます。(例)#,##0"円"
@ 入力されたデータを表します。(例)@"Kg"
\ 後に続く文字(キーワード)をリテラル文字として表示します。(例)\#####(表示例:#1234)

 

数値のキーワード

キーワード 説明
# 数値の桁を表します。(値が0の場合は何も表示しない)
0 数値の桁を表します。(値が0の場合は0を表示)
. 小数点を表します。
, 3桁区切りで数値を表示するための桁区切り記号。または、数値を 1000 で割って小数部を四捨五入して表示することを表します。

 

色のキーワード

キーワード 説明
[Black] 文字を黒色で表示
[Blue] 文字を青色で表示
[Cyan] 文字を水色で表示
[Green] 文字を緑色で表示
[Magenta] 文字を紫色で表示
[Red] 文字を赤色で表示
[White] 文字を白色で表示
[Yellow] 文字を黄色で表示

 

条件の指定

キーワード 説明
[](角かっこで囲む) 書式を適用する条件を角かっこで囲みます。(例)0.00[<10];0[>=10]

 

通貨/パーセント/指数のキーワード

キーワード 説明
% 数値に 100 を掛けてパーセント記号を付けて表示します。
\\ 日本語のフォントでは通貨記号を表示します(キーワードをリテラル文字として表示するため「\」を2つ続けます)。
サンプルコード

次のサンプルコードは標準型セルの FormatString プロパティに書式を設定します。そして、このセル型を1行1列目のセルに設定します。

C#
コードのコピー
GeneralCellType g = new GeneralCellType();
g.FormatString = @"\\#,##0";
gcSpreadGrid1[0, 0].CellType = g;
Visual Basic
コードのコピー
Dim g As New GeneralCellType()
g.FormatString = "\\#,##0"
GcSpreadGrid1(0, 0).CellType = g
E-、E+、e-、e+ のいずれか E-、E+、e-、e+ の右に 0 や # が指定されている場合、指数形式で表示。0 や # の個数が、指数の桁数を表します。

 

日付のキーワード

キーワード 説明
yy 年を下2桁で表示
yyyy 年を4桁で表示
e 和暦年を表示(先頭に0を付けない)※
ee 和暦年を2桁で表示(先頭に0を付ける)※
g 年号の頭文字をアルファベットで表示(M、T、S、H、R)※
gg 年号の頭文字を漢字で表示(明、大、昭、平、令)※
ggg 年号の正式名称を漢字で表示(明治、大正、昭和、平成、令和)※
m 月を表示(先頭に0を付けない)
mm 月を2桁で表示(先頭に0を付ける)
d 日にちを表示(先頭に0を付けない)
dd 日にちを2桁で表示(先頭に0を付ける)
ddd または aaa 曜日の頭文字を漢字で表示(日 〜 土)
dddd または aaaa 曜日を漢字で表示(日曜日 〜 土曜日)

※和暦を設定する場合、書式文字列の最初に[$-411](日本語を表すロケール指定子)を設定してください。(例)[$-411]ggge年m月d日

 

時刻および時間のキーワード

キーワード 説明
H 時刻を 24 時間制で表示(先頭に0を付けない)
hh 時刻を 24 時間制で2桁で表示(先頭に0を付ける)
m 分を表示(先頭に0を付けない)
mm 分を2桁で表示(先頭に0を付ける)
s 秒を表示(先頭に0を付けない)
ss 秒を2桁で表示(先頭に0を付ける)
h AM/PM 時刻を 12 時間制で表示し、最後に「午前」または「午後」を表示
h:mm AM/PM 時刻と分を 12 時間制で表示し、最後に「午前」または「午後」を表示
h:mm:ss A/P 時刻と分と秒を 12 時間制で表示し、最後に A または P を表示
[h]:mm 24 時間を超える時間の合計を表示
[mm]:ss 60 分を超える分の合計を表示
[ss] 60 秒を超える秒の合計を表示

 

なお、Excel で使われる次のキーワードには対応していません。

使用できないキーワード

キーワード 説明
_ 後に続く文字幅分のスペースを追加します。このキーワードは使用できません。
* 後に続く文字をセル幅分、繰り返します。このキーワードは使用できません。

FormatString プロパティの設定について、次のサンプルコードを参照してください。

次のサンプルコードは標準型セルの FormatString プロパティに書式を設定します。そして、このセル型を1行1列目のセルに設定します。

C#
コードのコピー
GeneralCellType g = new GeneralCellType();
g.FormatString = @"\\#,##0";
gcSpreadGrid1[0, 0].CellType = g;
Visual Basic
コードのコピー
Dim g As New GeneralCellType()
g.FormatString = "\\#,##0"
GcSpreadGrid1(0, 0).CellType = g

Formatter による設定

IFormatter インタフェースを実装するクラスを作成し、書式設定を独自に実装できます。次のサンプルコードを参照してください。

次のサンプルコードは IFormatter インタフェースを実装する MyCustomFormatter クラスを作成し、書式設定を実装します。そして、標準型セルの Formatter プロパティに作成したクラスのインスタンスを設定し、このセル型を1行1列目のセルに設定します。

C#
コードのコピー
GeneralCellType g = new GeneralCellType();
g.Formatter = new MyCustomFormatter();
gcSpreadGrid1[0, 0].CellType = g;
C#
コードのコピー
class MyCustomFormatter : IFormatter
{
    NumberFormatInfo ninfo;
    public MyCustomFormatter()
    {
        ninfo = new NumberFormatInfo();
        ninfo.CurrencySymbol = "円";
        ninfo.CurrencyDecimalDigits = 0;
        ninfo.CurrencyPositivePattern=1;
    }
    public string Format(object obj)
    {
        if (obj is decimal)
            return ((decimal)obj).ToString("C", ninfo);
        return null;
    }
    public object Parse(string str)
    {
        decimal d;
        decimal.TryParse(str, NumberStyles.AllowCurrencySymbol, ninfo, out d);
        return d;           
    }
}
Visual Basic
コードのコピー
Dim g As New GeneralCellType()
g.Formatter = New MyCustomFormatter()
GcSpreadGrid1.Columns(0, 0).CellType = g
Visual Basic
コードのコピー
Class MyCustomFormatter
    Implements IFormatter
    Private ninfo As NumberFormatInfo
    Public Sub New()
        ninfo = New NumberFormatInfo()
        ninfo.CurrencySymbol = "円"
        ninfo.CurrencyDecimalDigits = 0
        ninfo.CurrencyPositivePattern = 1
    End Sub
    Public Function Format(obj As Object) As String Implements IFormatter.Format
        If TypeOf obj Is Decimal Then
            Return CDec(obj).ToString("C", ninfo)
        End If
        Return Nothing
    End Function
    Public Function Parse(str As String) As Object Implements IFormatter.Parse
        Dim d As Decimal
        Decimal.TryParse(str, NumberStyles.AllowCurrencySymbol, ninfo, d)
        Return d
    End Function
End Class
関連トピック

 

 


Copyright © 2012 GrapeCity inc. All rights reserved.