ビルトインフォーマット(組み込み書式)について

Excelの書式は、ファイル内部では インデックス番号 に対して、 書式のパターン が割り振られています。

その中で、インデックス番号が 0~49は予め固定のフォーマットを持ち、ビルトインフォーマット(組み込み書式)と呼ばれます。

  • Excelのバージョンによっては、インデックス番号だけ持ち、書式を持たない場合があります。

  • 50番以降は、ユーザ定義用書式として、ファイルによって異なります。

  • ただし、50~59番は、Excelの言語環境によって予約された番号で、インデックス番号だけ持ち、書式を持たない場合があります。

  • ビルインフォーマットは、JExcelAPIの場合とApaceh POIでは一部異なっています。

  • OSの言語環境によって変わるものがあります。

    • 日時、通貨記号を含む書式は、環境によって変わる可能性があります。

    • JExcelAPI/Apache POIとも英語環境の値で固定で定義されており、日本語の書式には対応していません。

注釈

ビルトインフォーマットは、各ライブラリでプログラムで固定長の文字列として記述されています。

  • Apache POIの場合、 org.apache.poi.ss.usermodel.BuiltinFormats (Javadoc ) で定義されています。

  • JExcel APIの場合、 非公開のクラス jxl.biff.BuiltInFormat で定義されています。

本ライブラリでは、OSの言語によって変わるような書式や間違っている書式は、 予め FormatterResolver#registerDefaultFormat() メソッド内で登録し、正しい書式で取得できるようにしています。

ビルドインフォーマットの一覧(0~49)
index
16進
index
10進

英語環境

日本語環境
(英語環境と同じ場合は省略)

備考

0

0

General

標準/G

標準の設定。日本語の場合、内部的には英語環境と同じ。

1

1

0

-123

小数なしの数値の書式。

2

2

0.00

-123.45

小数ありの数値の書式。

3

3

#,##0

-12,345

桁区切りの数値の書式。

4

4

#,##0.00

-12,345.67

小数あり、桁区切りの数値の書式。

5

5

$#,##0_);($#,##0)

\#,##0;\-#,##0

\-123

会計用の書式。通貨の単位や括弧が異なる。

6

6

$#,##0_);[Red]($#,##0)

\#,##0;[Red]\-#,##0

-123

会計用の書式。通貨の単位や括弧が異なる。

7

7

$#,##0.00);($#,##0.00)

\#,##0.00;\-#,##0.00

\-123.46

会計用の書式。通貨の単位や括弧が異なる。

8

8

$#,##0.00_);[Red]($#,##0.00)

\#,##0.00;[Red]\-#,##0.00

\-123.46

会計用の書式。通貨の単位や括弧が異なる。

9

9

0%

12%

100分率の書式。

a

10

0.00%

12.34%

100分率の書式。

b

11

0.00E+00

1.23E-02

指数用の書式。

c

12

# ?/?

12 1/3

分数の書式。

d

13

# ??/??

12 10/29

分数の書式。

e

14

m/d/yy

yyyy/m/d

2000/2/29

日付の書式。年の桁数、順番が異なる。

f

15

d-mmm-yy

29-Feb-00

日付の書式。

10

16

d-mmm

29-Feb

日付の書式。

11

17

mmm-yy

Feb-00

日付の書式。

12

18

h:mm AM/PM

10:19 AM

時刻の書式。

13

19

h:mm:ss AM/PM

10:19:23 AM

時刻の書式。

14

20

h:mm

10:19

時刻の書式。

15

21

h:mm:ss

10:19:23

時刻の書式。

16

22

m/d/yy h:mm

yyyy/m/d h:mm

2000/2/29 10:19

日時の書式。年の桁数、順番が異なる。

17

23

\$#,##0_);\(\$#,##0\)

$36,585

18

24

\$#,##0_);[Red]\(\$#,##0\)

$36,585

19

25

\$#,##0.00_);\(\$#,##0.00\)

$36,585.43

1a

26

\$#,##0.00_);[Red]\(\$#,##0.00\)

$36,585.43

1b

27

m/d/yy

[$-411]ge.m.d

H12.2.29

日付の書式。日本語環境の場合、和暦表示。
ファイルを際保存すると、57番に割り振られる。

1c

28

m/d/yy

[$-411]ggge"年"m"月"d"日"

平成12年2月29日

日付の書式。日本語環境の場合、和暦表示。
ファイルを際保存すると、58番に割り振られる。

1d

29

m/d/yy

[$-411]ggge"年"m"月"d"日"

平成12年2月29日

日付の書式。日本語環境の場合、和暦表示。
ファイルを際保存すると、58番に割り振られる。

1e

30

m/d/yy

2/29/00

日付の書式。

1f

31

m/d/yy

yyyy"年"m"月"d"日"

2000年2月29日

日付の書式。日本語環境の場合、和暦表示。

20

32

h:mm:ss

h"時"mm"分"

10時19分

時間の書式。日本語環境の場合、区切りが異なる。

21

33

h:mm:ss

h"時"mm"分"

10時19分

時間の書式。日本語環境の場合、区切りが異なる。

22

34

h:mm:ss

yyyy"年"m"月"

2000年2月

時刻の書式。日本語環境の場合、日付の書式。
ファイルを際保存すると、55番に割り振られる。

23

35

h:mm:ss

m"月"d"日"

2月29日

時刻の書式。日本語環境の場合、日付の書式。
ファイルを際保存すると、56番に割り振られる。

24

36

m/d/yy

[$-411]ge.m.d

H12.2.29

時刻の書式。日本語環境の場合、和暦表示。
ファイルを際保存すると、57番に割り振られる。

25

37

#,##0_);(#,##0)

#,##0;-#,##0

-123

数値の書式。日本語の場合、負の表現に括弧が付かない。

26

38

#,##0_);[Red](#,##0)

#,##0;[Red]-#,##0

-123

数値の書式。日本語の場合、負の表現に括弧が付かない。

27

39

#,##0.00_);(#,##0.00)

#,##0.00;-#,##0.00

-123.46

数値の書式。日本語の場合、負の表現に括弧が付かない。

28

40

#,##0.00_);[Red](#,##0.00)

#,##0.00;[Red]-#,##0.00

-123.46

数値の書式。日本語の場合、負の表現に括弧が付かない。

29

41

_(* #,##0_);_(* (#,##0);_(* "-"_);_(@_)

_ * #,##0_ ;_ * -#,##0_ ;_ * "-"_ ;_ @_

-123

数値の書式。日本語の場合、負の表現に括弧が付かない。

2a

42

_($* #,##0_);_($* (#,##0);_($* "-"_);_(@_)

_ \* #,##0_ ;_ \* -#,##0_ ;_ \* "-"_ ;_ @_

\-123

会計の書式。通貨が異なる。日本語の場合、負の表現に括弧が付かない。

2b

43

_(* #,##0.00_);_(* (#,##0.00);_(* "-"??_);_(@_)

_ * #,##0.00_ ;_ * -#,##0.00_ ;_ * "-"??_ ;_ @_

-123.46

数値の書式。日本語の場合、負の表現に括弧が付かない。

2c

44

_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)

_ \* #,##0.00_ ;_ \* -#,##0.00_ ;_ \* "-"??_ ;_ @_

\-123.46

会計の書式。通貨が異なる。日本語の場合、負の表現に括弧が付かない。

2d

45

mm:ss

10:19

時刻の書式。

2e

46

[h]:mm:ss

30:10:19

時間時間の書式。

2f

47

mm:ss.0

10:19.0

時間の書式。

30

48

##0.0E+0

12.3E+0

指数の書式。

41

49

@

テキスト

文字列の書式。

ビルドインフォーマットの一覧(50~)
index
16進
index
10進

英語環境

日本語環境
(英語環境と同じ場合は省略)

備考

37

55

h:mm:ss

yyyy"年"m"月"

2000年2月

時刻の書式。日本語の場合、日付の書式。

38

56

h:mm:ss

m"月"d"日"

2月29日

時刻の書式。日本語の場合、日付の書式。

39

57

m/d/yy

[$-411]ge.m.d

H12.2.29

日付の書式。日本語の場合、和暦表示。

3A

58

m/d/yy

[$-411]ggge"年"m"月"d"日"

平成12年2月29日

日付の書式。日本語の場合、和暦表示。

組み込み書式以外で、OSの言語環境によって変わる書式があります。 Excel上では、書式の前にアスタリスク(*)が付いている書式です。

言語によって書式が変わる

英語環境

日本の語環境

備考

m/d/yy

yyyy/m/d

2000/2/29

日付の書式。Excelの表記上は、「* 2001/3/14」と表示されます。
インデックス番号14の組み込み書式です。

[$-F800]dddd\,\ mmmm\ dd\,\ yyyy

yyyy"年"m"月"d"日"

2000年2月29日

日付の書式。Excelの表記上は、「* 2001年3月14日」と表示されます。

[$-F400]h:mm:ss\ AM/PM

h:mm:ss

10:19:23

日付の書式。Excelの表記上は、「* 13:30:55」と表示されます。

JExcelAPIによる書式のインデックスの取得

  • JExcelAPIでは、書式のインデックスの取得は DisplayFormat#getFormatIndex() から取得します。

  • ビルトインフォーマットの定義は、非公開のクラス jxl.biff.BuiltInfFomrat で定義されています。

  • 本ライブラリでは、 JXLCell#getFormatIndex() で実装されている。

final CellFormat cellStyle = cell.getCellFormat();
if(cellStyle == null) {
    // 書式を持たない場合
    return 0;
}

final Format cellFormat = cellStyle.getFormat();
if(cellFormat == null && cellStyle instanceof XFRecord) {
    final XFRecord record = (XFRecord) cellStyle;
    return (short) record.formatIndex;

} else if(cellFormat == null) {
    // 書式を持たない場合
    return 0;
}

if(cellFormat instanceof DisplayFormat) {
    final DisplayFormat displayFormat = (DisplayFormat)cellFormat;
    return (short) displayFormat.getFormatIndex();
}

// 不明な場合
return 0;

Apache POIによる書式のインデックスの取得

  • Apache POIの書式のインデックスは、 CellSyle#getDataFormat() から取得します。

short formatIndex = cell.getCellStyle().getDataFormat();