シート上の見出しの取得
読み込み時、書き込み時にマッピングしたセルの見出しを取得できます。
入力値検証の際などのメッセージの引数に使用したりします。
取得方法は複数ありますが、 Map<String, String> labels
フィールドを用いる方が記述量を少なくできます。
注釈
セルの見出しを取得できるのは、アノテーション @XlsLabelledCell, @XlsColumn, @XlsMapColumns
を付与したプロパティです。
Map<String, String> labels
というフィールドを定義しておくとプロパティ名をキーにセルの位置がセットされるようになっています。
アノテーション
@XlsMapColumns
のセルの位置情報のキーは、 <プロパティ名>[<セルの見出し>] としてセットされます。アノテーション
@XlsArrayColumns
のセルの位置情報のキーは、 <プロパティ名>[<インデックス>] としてセットされます。
アノテーションを付与した <setterメソッド名>Label というメソッドを用意しておくと、引数にセルの位置が渡されます。
位置情報を取得用のsetterメソッドは、引数
String
型を取る必要があります。ただし、
@XlsMapColumns
に対するsetterメソッドは、第一引数にセルの見出しが必要になります。
String key, String label
ただし、
@XlsArrayColumns
に対するsetterメソッドは、第一引数にセルのインデックスが必要になります。
int index, String label
アノテーションを付与した <フィールド名>Label というString型のフィールドを用意しておくと、セルの位置が渡されます。
ただし、
@XlsMapColumns
に対するフィールドは、Map<String, String>
型にする必要があります。キーには見出しが入ります。また、
@XlsArrayColumns
に対するフィールドは、List<String>
型にする必要があります。
1public class SampleRecord {
2
3 // 汎用的な見出し情報
4 public Map<String, String> labels;
5
6 // プロパティごとに個別に見出し情報を定義するフィールド
7 private String nameLabel;
8
9 @XlsColumns(label="名前")
10 private String name;
11
12 // プロパティごとに個別に見出し情報を定義するメソッド
13 // フィールド labelsが定義あれば必要ありません。
14 public void setNameLabel(String label) {
15 //...
16 }
17
18 // @XlsMapColumnsの場合
19 @XlsMapColumns(previousColumnName="出欠")
20 private Map<String, String> attendedMap;
21
22 // プロパティごとに個別に見出し情報を定義するフィールド
23 private Map<String, String> attendedMapLabel;
24
25 // プロパティごとに個別に見出し情報を定義するメソッド
26 // @XlsMapColumnsの場合keyは、セルの見出しの値
27 // フィールド labelsが定義あれば必要ありません。
28 public void setAttendedMapLabel(String key, String label) {
29 //...
30 }
31
32 // @XlsArrayColumnsの場合
33 @XlsArrayColumns(columnName="ふりがな")
34 private List<String> rubyList;
35
36 // プロパティごとに個別に見出し情報を定義するフィールド
37 private Map<String, String> rubyListLabel;
38
39 // プロパティごとに個別に見出し情報を定義するメソッド
40 // @XlsArrayColumnsの場合indexは、インデックスの値
41 // フィールド labelsが定義あれば必要ありません。
42 public void setRubyListLabel(int index, String label) {
43 //...
44 }
45
46
47}
注釈
フィールド Map<String, String> labels
と対応するsetterメソッドやフィールドをそれぞれ定義していた場合、
優先度 labels > setterメソッド > フィールド に従い設定されます。