-------------------------------------------------------- シート上の見出しの取得 -------------------------------------------------------- 読み込み時、書き込み時にマッピングしたセルの見出しを取得できます。 入力値検証の際などのメッセージの引数に使用したりします。 取得方法は複数ありますが、 ``Map labels`` フィールドを用いる方が記述量を少なくできます。 .. note:: セルの見出しを取得できるのは、アノテーション ``@XlsLabelledCell, @XlsColumn, @XlsMapColumns`` を付与したプロパティです。 1. ``Map labels`` というフィールドを定義しておくとプロパティ名をキーにセルの位置がセットされるようになっています。 * アノテーション ``@XlsMapColumns`` のセルの位置情報のキーは、 *\<プロパティ名\>[<セルの見出し\>]* としてセットされます。 * アノテーション ``@XlsArrayColumns`` のセルの位置情報のキーは、 *\<プロパティ名\>[<インデックス\>]* としてセットされます。 2. アノテーションを付与した *\Label* というメソッドを用意しておくと、引数にセルの位置が渡されます。 * 位置情報を取得用のsetterメソッドは、引数 ``String`` 型を取る必要があります。 * ただし、``@XlsMapColumns`` に対するsetterメソッドは、第一引数にセルの見出しが必要になります。 * String key, String label * ただし、``@XlsArrayColumns`` に対するsetterメソッドは、第一引数にセルのインデックスが必要になります。 * int index, String label 3. アノテーションを付与した *\<フィールド名\>Label* というString型のフィールドを用意しておくと、セルの位置が渡されます。 * ただし、``@XlsMapColumns`` に対するフィールドは、``Map`` 型にする必要があります。キーには見出しが入ります。 * また、``@XlsArrayColumns`` に対するフィールドは、``List`` 型にする必要があります。 .. sourcecode:: java :linenos: public class SampleRecord { // 汎用的な見出し情報 public Map labels; // プロパティごとに個別に見出し情報を定義するフィールド private String nameLabel; @XlsColumns(label="名前") private String name; // プロパティごとに個別に見出し情報を定義するメソッド // フィールド labelsが定義あれば必要ありません。 public void setNameLabel(String label) { //... } // @XlsMapColumnsの場合 @XlsMapColumns(previousColumnName="出欠") private Map attendedMap; // プロパティごとに個別に見出し情報を定義するフィールド private Map attendedMapLabel; // プロパティごとに個別に見出し情報を定義するメソッド // @XlsMapColumnsの場合keyは、セルの見出しの値 // フィールド labelsが定義あれば必要ありません。 public void setAttendedMapLabel(String key, String label) { //... } // @XlsArrayColumnsの場合 @XlsArrayColumns(columnName="ふりがな") private List rubyList; // プロパティごとに個別に見出し情報を定義するフィールド private Map rubyListLabel; // プロパティごとに個別に見出し情報を定義するメソッド // @XlsArrayColumnsの場合indexは、インデックスの値 // フィールド labelsが定義あれば必要ありません。 public void setRubyListLabel(int index, String label) { //... } } .. note:: フィールド ``Map labels`` と対応するsetterメソッドやフィールドをそれぞれ定義していた場合、 優先度 *labels > setterメソッド > フィールド* に従い設定されます。