@XlsIgnorable
¶
アノテーション @XlsHorizontalRecords 、@XlsVerticalRecords を使用して、読み込む際に、空のレコードを読み飛ばしたい場合、 レコードが空と判定するためのメソッドに付与します。
@XlsIgnorable
を付与したメソッドは、publicかつ引数なしの戻り値がboolean型の書式にする必要があります。@XlsVerticalRecords でも同様に使用できます。
また、この機能は読み込み時のみに有効です。書き込み時は、空のレコードでもそのまま出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // ルートのオブジェクト
@XlsSheet(name="シート名")
public class UnitUser {
@XlsHorizontalRecords(tableLabel="ユーザ一覧")
private List<User> users;
}
// レコードのオブジェクト
public class User {
@XlsColumn(columnName="No.")
private int no;
@XlsColumn(columnName="名前")
private String name;
@XlsColumn(columnName="住所")
private String address;
// レコードが空と判定するためのメソッド
@XlsIgnorable
public boolean isEmpty() {
if(name != null || !name.isEmpty()) {
return false;
}
if(address != null || !address.isEmpty()) {
return false;
}
return true;
}
}
|
IsEmptyBuilderを使った記述の簡単化¶
IsEmptyBuilder
(ver.0.5から追加)を利用することで、より簡潔に記述することも可能です。
IsEmptyBuilder#reflectionIsEmpty(...)
を利用して判定する場合、位置情報を保持するフィールドMap<String, Point> positions
などは除外対象とする必要があります。独自に判定する場合、
IsEmptyBuilder#append(...)
を利用します。さらに、
IsEmptyBuilder#compare(IsEmptyComparator)
を利用することで独自の判定をすることができます。その際に、Lambda式を利用すると簡潔に記載できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | // ルートのオブジェクト
@XlsSheet(name="シート名")
public class UnitUser {
@XlsHorizontalRecords(tableLabel="ユーザ一覧")
private List<User> users;
}
// レコードのオブジェクト
public class User {
// マッピングしたセルの位置情報を保持する。
private Map<String, Point> positions;
// マッピングしたセルのラベル情報を保持する。
private Map<String, String> labels;
@XlsColumn(columnName="No.")
private int no;
@XlsColumn(columnName="名前")
private String name;
@XlsColumn(columnName="住所")
private String address;
// レコードが空と判定するためのメソッド
@XlsIgnorable
public boolean isEmpty() {
return IsEmptyBuilder.reflectionIsEmpty(this, "positions", "labels");
}
// 独自に判定する場合
public boolean isEmpty2() {
return new IsEmptyBuilder()
.append(name)
.compare(() -> StringUtils.isBlank(address))
.isEmpty();
}
}
|