シート上のコメントの取得

読み込み時に、マッピングしたセルに設定されているコメントを取得できます。 [ver.2.1]

書き込み時は、セルにコメントを設定できます。

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

注釈

セルのコメントを取得できるのは、アノテーション @XlsCell, @XlsLabelledCell, @XlsColumn, @XlsMapColumns, @XlsArrayColumns, @XlsArrayCell, @XlsLabelledArrayCell を付与したプロパティです。

見出しセルに対するコメントの取得は、アノテーション @XlsLablledComment を使用します。 さらに、任意の位置のセルのコメントの取得は、アノテーション @XlsComment を使用します。

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

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

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

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

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

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

    • String key, String label

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

    • int index, String label

  1. アノテーションを付与した <フィールド名>Comment というString型のフィールドを用意しておくと、セルのコメントが渡されます。

  • ただし、@XlsMapColumns に対するフィールドは、Map<String, String> 型にする必要があります。キーには見出しが入ります。

  • また、@XlsArrayColumns に対するフィールドは、List<String> 型にする必要があります。

 1public class SampleRecord {
 2
 3    // 汎用的なコメント情報
 4    public Map<String, String> comments;
 5
 6    // プロパティごとに個別にコメント情報を定義するフィールド
 7    private String nameComment;
 8
 9    @XlsColumns(label="名前")
10    private String name;
11
12    // プロパティごとに個別にコメント情報を定義するメソッド
13    // フィールド commentsが定義あれば必要ありません。
14    public void setNameComment(String comment) {
15        //...
16    }
17
18    // @XlsMapColumnsの場合
19    @XlsMapColumns(previousColumnName="名前")
20    private Map<String, String> attendedMap;
21
22    // プロパティごとに個別にコメント情報を定義するフィールド
23    private Map<String, String> attendedMapComment;
24
25    // プロパティごとに個別に見出し情報を定義するメソッド
26    // @XlsMapColumnsの場合keyは、セルの見出しの値
27    // フィールド commentsが定義あれば必要ありません。
28    public void setAttendedMapComment(String key, String comment) {
29        //...
30    }
31
32    // @XlsArrayColumnsの場合
33    @XlsArrayColumns(columnName="ふりがな")
34    private List<String> rubyList;
35
36    // プロパティごとに個別にコメント情報を定義するフィールド
37    private Map<String, String> rubyListComment;
38
39    // プロパティごとに個別にコメント情報を定義するメソッド
40    // @XlsArrayColumnsの場合indexは、インデックスの値
41    // フィールド labelsが定義あれば必要ありません。
42    public void setRubyListComment(int index, String comment) {
43        //...
44    }
45
46}

注釈

フィールド Map<String, String> comments と対応するsetterメソッドやフィールドをそれぞれ定義していた場合、 優先度 comments > setterメソッド > フィールド に従い設定されます。

書き込み時のコメント情報の設定方法

書き込み時は、読み込み時と同様に複数の定義方法があります。

書き込むコメント情報の定義方法は複数ありますが、 Map<String, String> comments フィールドを用いる方が記述量を少なくできます。

各プロパティに対するメソッドを定義しておけば、getterメソッド経由で取得されます。

 1// 書き込むデータの定義
 2SampleSheet sheet = new SampleSheet();
 3
 4SampleRecord item = new SampleRecord();
 5
 6// コメントを保持するフィールドのインスタンス定義
 7item.comments = new HashMal<>();
 8
 9// プロパティ「name」に対するコメントを設定する
10item.comments.put("name", "コメント1");
11
12// @XlsMapColumnsに対するコメントを設定する。
13item.comments.put("attendedMap[4月1日]", "コメント2");
14item.comments.put("attendedMap[4月2日]", "コメント3");
15
16// @XlsArrayColumnsに対するコメントを設定する。
17item.comments.put("rubyList[0]", "コメント4");
18item.comments.put("rubyList[1]", "コメント5");
19
20// レコードの定義
21public class SampleRecord {
22
23    // 汎用的なコメント情報
24    public Map<String, String> comments;
25
26    // プロパティごとに個別にコメント情報を定義するフィールド
27    private String nameComment;
28
29    @XlsColumns(label="名前")
30    private String name;
31
32    // プロパティごとに個別にコメント情報を定義するメソッド
33    // フィールド commentsが定義あれば必要ありません。
34    public String getNameComment() {
35        //...
36    }
37
38    // @XlsMapColumnsの場合
39    @XlsMapColumns(previousColumnName="名前")
40    private Map<String, String> attendedMap;
41
42    // プロパティごとに個別にコメント情報を定義するフィールド
43    private Map<String, String> attendedMapComment;
44
45    // プロパティごとに個別に見出し情報を定義するメソッド
46    // @XlsMapColumnsの場合keyは、セルの見出しの値
47    // フィールド commentsが定義あれば必要ありません。
48    public String getAttendedMapComment(String key) {
49        //...
50    }
51
52    // @XlsArrayColumnsの場合
53    @XlsArrayColumns(columnName="ふりがな")
54    private List<String> rubyList;
55
56    // プロパティごとに個別にコメント情報を定義するフィールド
57    private Map<String, String> rubyListComment;
58
59    // プロパティごとに個別にコメント情報を定義するメソッド
60    // @XlsArrayColumnsの場合indexは、インデックスの値
61    // フィールド labelsが定義あれば必要ありません。
62    public String setRubyListComment(int index) {
63        //...
64    }
65
66}

注釈

書き込み時のコメントの枠サイズなどは、アノテーション @XlsCommentOption を使用します。

フォントなどは、セルの設定値を引き継ぎます。 ただし、すでにコメントが設定されている場合は、設定されている書式に従います。