2. 注意事項¶
2.1. ExcelとJava間で数値をマッピングする際の注意事項¶
ExcelとJavaとでは表現可能な数値の有効桁数がなどが異なるため、桁落ちなどのため注意が必要です。
文字列型のセルの値をJavaの数値型にマッピングする場合、Javaで表現可能な最大値/最小値を超えてマッピングした場合、エラーとなります。
ver0.5以降の場合、
com.gh.mygreen.xlsmapper.cellconvert.TypeBindException
が発生します。- ver0.4以前の場合、オーバーフローを起こして読み込まれます。
例えば、shortに最大値+1(32768)がセルに設定されている場合、オーバーフローを起こして、
-32768
として読み込まれます。
Excelでは有効桁数が15桁であるため、Javaのlong型など15桁を超える表現が可能な数値を書き込んだ場合、数値が丸められます。
例えば、long型の19桁の数値
1234567890123456789
を書き込んだ場合、16桁以降の値が丸められ1234567890123450000
として書き込まれます。Excelの仕様については、Excel の仕様と制限 を参照してください。
2.2. アノテーションの定義位置¶
XlsMapperでは、フィールドとメソッドの両方にアノテーションを付与することができます。 アノテーションは、フィールドまたはフィールドに対するアクセッサメソッドに定義可能です。 読み込みと書き込みの両方を行うならば、フィールドに定義することをお薦めします。
クラスの場合、全てのアクセスレベル(public/protected/private/なし)に付与したアノテーションが有効になります。
ただし、継承元の親クラスに定義されたものは無効です。
内部クラスとして定義する場合、静的な
static class
で定義する必要があります。
フィールドの場合、全てのアクセスレベル(public/protected/privte/なし)に付与したアノテーションが有効になります。
メソッドの場合、publicのみ有効になります。
メソッドに付与した場合、読み込み時はsetterに付与したアノテーションを用います。 書き込み時は、getterに付与したアノテーションを用います。
フィールドと対応するメソッド(getter/setter)の両方にアノテーションを付与した場合、メソッドに付与したアノテーションが優先されます。
読み込み時と書き込み時の両方を行うことを考慮すると、フィールドにアノテーションを付与することをお薦めします。
注釈
アクセッサメソッドを動的に生成する Lombok を利用する場合は、フィールドに定義してください。