@XlsNumberConverter
¶
数値型に対する変換規則を指定する際に利用するアノテーションです。
対応するJavaの型は次の通り。
byte/short/int/long/float/doubleのプリミティブ型とそのラッパークラス。
java.math.BigDecimal
/java.math.BigInteger
。
読み込み時の書式の指定¶
読み込み時にセルの種類が数値(通貨、会計、パーセンテージ、分数、指数)ではない場合、
文字列として値を取得し、その値を属性 javaPattern
で指定した書式に従いパースし、Javaの数値型に変換します。
属性
javaPattern
で読み込み時の書式を指定します。 [ver1.1+]Javaのクラス
java.text.DecimalFormat
で解釈可能な書式を設定します。ver1.0以前は、属性patternを使っていましたが、廃止になりました。
属性
locale
でロケールを指定します。言語コードのみを指定する場合、'ja'の2桁で指定します。
言語コードと国コードを指定する場合、'ja _JP'のようにアンダーバーで区切り指定します。
属性
currency
で通貨コード(ISO-4217コード)を指定します。Javaのクラス
java.util.Currency
で解釈可能なコードを指定します。
書式に合わない値をパースした場合、例外
TypeBindException
が発生します。
1 2 3 4 5 6 7 | public class SampleRecord {
@XlsColumn(columnName="給与")
@XlsNumberConverter(javaPattern="\u00A4\u00A4 #,##0.0000", locale="ja_JP", currency="USD")
private double salary;
}
|
書き込み時の書式の指定¶
書き込み時の書式は、基本的にテンプレートファイルに設定してある値を使用します。 また、アノテーションでも直接指定することができます。
属性
excelPattern
で書き込み時の書式を指定します。 [ver1.1+]Excelの書式を指定する場合は、 ユーザ定義 の形式で指定する必要があります。
1 2 3 4 5 6 7 | public class SampleRecord {
@XlsColumn(columnName="給与")
@XlsNumberConverter(javaPattern="[$-411]\"¥\"#,##0.0000")
private double salary;
}
|
注釈
テンプレートファイルのセルの書式を「標準」に設定している場合に書き込むと、 書式が「標準」設定の全てのセルの書式が書き換わってしまいます。
そのため、日付や数値などの書式が必要な場合は、テンプレートファイルで予め書式を設定しておくか、 アノテーションの属性excelPatternで書式を指定しておいてください。
有効桁数の指定¶
Excel内部とJavaの数値は、表現可能な有効桁数が異なります。
そのため、特に読み込み時などExcelの仕様に合わせてJavaのクラスに指定することが可能です。
属性
precision
で有効桁数を指定します。 [ver0.5+]0以下の値を設定すると、桁数の指定を省略したことになり、無制限になります。
注釈
Excelでは有効桁数が15桁であるため、Javaのlong型など15桁を超える表現が可能な数値を書き込んだ場合、数値が丸められるため注意してください。
例えば、long型の19桁の数値
1234567890123456789
を書き込んだ場合、16桁以降の値が丸められ1234567890123450000
として書き込まれます。Excelの仕様については、Excel の仕様と制限 を参照してください。