@Target(value={METHOD,FIELD}) @Retention(value=RUNTIME) @Documented @XlsFieldProcessor(value={}) public @interface XlsLabelledCell
属性label() で、見出しとなるセルの値を指定します。
属性type()で見出しとなるセルから見て、設定されている位置を指定します。
セルが見つからない場合はエラーとなりますが、属性optional()を'true'とすることで無視して処理を続行します。
@XlsSheet(name="Users")
public class SampleSheet {
@XlsLabelledCell(label="ラベル1", type=LabelledCellType.Right)
private String title;
// ラベルセルが見つからなくても処理を続行する
@XlsLabelledCell(label="ラベル2", type=LabelledCellType.Bottom, optional=true)
private String summary;
}
基本的な使い方
シートの構造は同じだが、ラベルのセルが微妙に異なる場合、ラベルセルを正規表現による指定が可能です。
また、空白や改行を除去してラベルセルを比較するように設定することも可能です。
正規表現で指定する場合、アノテーションの属性の値を /正規表現/ のように、スラッシュで囲みます。
Configuration.setRegexLabelText(boolean) の値を trueに設定します。ラベセルの値に改行が空白が入っている場合、それらを除去し正規化してアノテーションの属性値と比較することが可能です。
Configuration.setNormalizeLabelText(boolean) の値を trueに設定します。これらの指定が可能な属性は、label()、headerLabel()です。
// システム設定
XlsMapper xlsMapper = new XlsMapper();
xlsMapper.getConfiguration()
.setRegexLabelText(true) // ラベルを正規表現で指定可能にする機能を有効にする。
.setNormalizeLabelText(true); // ラベルを正規化して比較する機能を有効にする。
// シート用クラス
@XlsSheet(name="Users")
public class SampleSheet {
// 正規表現による指定
@XlsLabelledCell(label="/名前.+/", type=LabelledCellType.Right)
private String className;
@XlsLabelledCell(label="コメント(オプション)", type=LabelledCellType.Right)
private String comment;
}
| 修飾子とタイプ | 必須要素と説明 |
|---|---|
LabelledCellType |
type
見出しセルから見て値が設定されているセルの位置を指定します。
|
| 修飾子とタイプ | 任意要素と説明 |
|---|---|
ProcessCase[] |
cases
適用するケースを指定します。
|
String |
headerLabel
同じラベルのセルが複数ある場合に区別するための見出しを指定します。
|
String |
label
見出しとなるセルの値を指定します。
|
int |
labelColumn
見出しとなるセルの列番号を指定します。
|
boolean |
labelMerged
ラベルセルが結合している場合を考慮するかどうか指定します。
|
int |
labelRow
見出しとなるセルの行番号を指定します。
|
boolean |
optional
セルが見つからなかった場合はエラーとなりますが、optional属性にtrueを指定しておくと、無視して処理を続行します。
|
int |
range
属性
type()の位置に向かって指定したセル数分を検索し、最初に発見した空白以外のセルの値を取得します。 |
int |
skip
ラベルセルから指定したセル数分離れたセルを開始位置としてマッピングする際に指定します。
|
public abstract LabelledCellType type
public abstract boolean optional
falseを指定し、セルが見つからない場合は、例外CellNotFoundExceptionがスローされます。
public abstract int range
type()の位置に向かって指定したセル数分を検索し、最初に発見した空白以外のセルの値を取得します。
属性range()とskip()を同時に指定した場合、まず、skip分セルを読み飛ばし、そこからrangeの範囲で空白以外のセルを検索します。
この属性 は、 読み込み時のみ有効 です。書き込み時に指定しても無視されます。
@XlsSheet(name="Users")
public class SampleSheet {
@XlsLabelledCell(label="ラベル", type=LabelledCellType.Right, range=4)
private String title;
}
属性rangeの概要
public abstract String label
システム設定により、正規表現による指定や正規化(改行、空白、タブの削除)による比較の対象となります。
public abstract int labelRow
labelColumn()属性とセットで指定します。
この属性は、XlsIterateTablesの中で指定したときに、処理内部で使用されるため、通常は設定しません。
public abstract int labelColumn
labelRow()属性とセットで指定します。
この属性は、XlsIterateTablesの中で指定したときに、処理内部で使用されるため、通常は設定しません。
public abstract String headerLabel
属性headerLabel()で指定されたセルから、属性label()で指定されたセルを下方向に検索し、
最初に見つかったセルをラベルセルとして使用します。
システム設定により、正規表現による指定や正規化(改行、空白、タブの削除)による比較の対象となります。
@XlsSheet(name="Users")
public class SampleSheet {
@XlsLabelledCell(label="クラス名", type=LabelledCellType.Right, headerLabel="アクション")
private String actionClassName;
@XlsLabelledCell(label="クラス名", type=LabelledCellType.Right, headerLabel="アクションフォーム")
private String formClassName;
}
属性headerLabelの概要
public abstract int skip
属性type()の方向に向かってラベルセルから指定したセル数分離れたセルの値をマッピングすることができます。
属性range()とskip()を同時に指定した場合、まず、skip分セルを読み飛ばし、そこからrangeの範囲で空白以外のセルを検索します。
@XlsSheet(name="Users")
public class SampleSheet {
@XlsLabelledCell(label="ラベル1", type=LabelledCellType.Right, skip=2)
private String title1;
@XlsLabelledCell(label="ラベル2", type=LabelledCellType.Bottom, skip=3)
private String title2;
}
属性skipの概要
public abstract boolean labelMerged
初期値はtrueであるため、結合されているかどうかは特に意識はする必要はありません。
labelMerged()の値が falseのとき、ラベルセルが結合されていると、
値が設定されているデータセルまでの距離が変わるため、属性skip()を併用します。
@XlsSheet(name="Users")
public class SampleSheet {
// labelMerged=trueは初期値なので、省略可
@@XlsLabelledCell(label="ラベル1", type=LabelledCellType.Right)
private String title1;
// labelMerged=falseで、ラベルが結合しているときは、skip属性を併用します。
@XlsLabelledCell(label="ラベル1", type=LabelledCellType.Right, labelMerged=false, skip=2)
private String title2;
}
属性labelMergedの概要
public abstract ProcessCase[] cases
Copyright © 2025 mygreen. All rights reserved.