シート上の見出しの取得

読み込み時、書き込み時にマッピングしたセルの見出しを取得できます。

入力値検証の際などのメッセージの引数に使用したりします。

取得方法は複数ありますが、 Map<String, String> labels フィールドを用いる方が記述量を少なくできます。

注釈

セルの見出しを取得できるのは、アノテーション @XlsLabelledCell, @XlsColumn, @XlsMapColumns を付与したプロパティです。

  1. Map<String, String> labels というフィールドを定義しておくとプロパティ名をキーにセルの位置がセットされるようになっています。

  • アノテーション @XlsMapColumns のセルの位置情報のキーは、 <プロパティ名>[<セルの見出し>] としてセットされます。

  • アノテーション @XlsArrayColumns のセルの位置情報のキーは、 <プロパティ名>[<インデックス>] としてセットされます。

  1. アノテーションを付与した <setterメソッド名>Label というメソッドを用意しておくと、引数にセルの位置が渡されます。

  • 位置情報を取得用のsetterメソッドは、引数 String 型を取る必要があります。

  • ただし、@XlsMapColumns に対するsetterメソッドは、第一引数にセルの見出しが必要になります。

    • String key, String label

  • ただし、@XlsArrayColumns に対するsetterメソッドは、第一引数にセルのインデックスが必要になります。

    • int index, String label

  1. アノテーションを付与した <フィールド名>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メソッド > フィールド に従い設定されます。