セルの取得・書き込みに関する仕様


概要

基本的にはセルの値をPOJOのフィールドで指定した型として取得します。
下記にそれぞれの型による注意事項を記載します。

Excelのセルが数値・通貨・会計・パーセンテージの書式の場合

POJO側の型が java.lang.String だった場合、Excelのセルが数値・通貨・会計・パーセンテージの書式の場合には、極力Excelの表示フォーマットに従って取得します。
一部フォーマットが認識できなかったり、負数が赤字のフォーマットだったりした場合などは、Excel上で表示されているものと異なる場合があります。
下表にまとめました。

数値の内容を文字列で取得した際のフォーマット対応一覧
フォーマット 表示どおり取得可能 不可能だった際の取得フォーマット
標準(数値)
標準(文字列)
数値((1,234)
数値((1,234))
数値(1,234×-1234
数値(-1,234)
数値(-1,234
数値(△1,234)
数値(▲1,234)
数値((1234.56)
数値((1234.56))
数値(1234.56×-1234.56
数値(-1234.56)
数値(-1234.56
数値(△1234.56)
数値(▲1234.56)
通貨((\123,456)×(123,456)
通貨((\123,456))×(123,456)
通貨(\123,456×-123,456
通貨(-\123,456)×($123,456)
通貨(-\123,456×($123,456)
通貨((\123,456.78)×(123,456.78)
通貨((\123,456.78))×(123,456.78)
通貨(\123,456.78×-123,456.78
通貨(-\123,456.78)×($123,456.78)
通貨(-\123,456.78×($123,456.78)
会計(\)×-123456
会計×-123456
会計(\ 少数2桁)×-123456.78
会計(少数2桁)×-123456.78
パーセンテージ
パーセンテージ(少数2桁)



日付セルのフォーマットに対する値取得

セルのフォーマットによっては日付と認識できない場合もあるため、
セルの値を取得する際に、日付は文字列として取得することをお勧めします。
POJO側の型に java.util.Date を使用した場合、セルが日付と認識できない場合には例外を上げます。
下表で日付として認識可能なフォーマットの場合に正しく動作します。
POJO側の型に java.lang.String を使用した場合、極力Excelの表示フォーマットに従って取得します。
また、日付として認識できるが、フォーマットどおりの文字列として取得できない場合には、「yyyy/MM/dd」として取得します。
日付としても認識できない場合は、日付データのシリアル値の文字列表現として取得します。
下表に動作をまとめました。

日付フォーマットのセル値取得対応

フォーマット日付として認識フォーマットどおりの文字列として取得可能
*yyyy/M/d
d-mmm-yy
d-mmm
mmm-yy
h:mm AM/PM
h:mm:ss AM/PM
h:mm
h:mm:ss
yyyy/m/d h:mm
m/d/yy
yyyy"年"m"月"d"日"
h"時"mm"分"
h"時"mm"分"ss"秒"
mm:ss
mm:ss.0
yyyy"年"m"月"
m"月"d"日"
[$-411]ge.m.d
[$-411]ggge"年"m"月"d"日"
*yyyy年M月d日×
[$-F800]dddd, mmmm dd, yyyy×
Gyy.m.d××
GGGGyy年m月d日××
yyyy年M月d日××
yyyy年M月××
M月d日××
yyyy/M/d×
yyyy/M/d H:m a×
yyyy/M/d HH:m×
M/d×
M/d/yy×
MM/dd/yy×
dd-MMM×
dd-MMM-yy×
dd-MMM-yy×
MMM-yy×
MMMM-yy×
[$-411]ge.m.d;@××
yyyyMMdd×
yyyy/MM/dd×


POJOのフィールドが Map 型の場合

POJO型のフィールドが Map 型の場合には、マップのエントリ (キーと値のペア) は、
Map.Entry<String, String> となります。
セルの値を String として取得する際の変換は上記をご確認ください。

POJOのフィールドが boolean 型の場合

セルの値として TRUE / FALSE 以外に、yes(true) / no(false) も boolean の値として認識します。
POJOの getter として、!isFiledName() のような「get」ではなく「is」メソッドでもアクセス可能です。