7. 部分的なカラムの読み書き
Beanに定義しているカラムのみ処理する方法を説明します。
7.1. 部分的なカラムの読み込み
CSVファイルで一部のカラムを読み込みたい場合は、フィールドの定義を単純に行わなければマッピングできます。
最後のカラム番号が実際のCSVファイルのカラム番号よりも小さい場合は、
@CsvPartial(columnSize=<カラムサイズ>)
[ JavaDoc ] で、実際のカラムサイズを指定します。@CsvBean(validateHeader=false)
に設定し、ヘッダー行の検証をスキップするようにしてください。値を true にして、ヘッダー行の検証を行うと、定義していない見出しがあり、値が一致しないためエラーとなります。
1import com.github.mygreen.supercsv.annotation.CsvBean;
2import com.github.mygreen.supercsv.annotation.CsvColumn;
3import com.github.mygreen.supercsv.annotation.CsvPartial;
4
5
6@CsvBean(header=true, validateHeader=false) // ヘッダー行がある場合は、検証をスキップします。
7@CsvPartial(columnSize=5) // 実際のCSVファイルのカラムサイズを指定します。
8public class SampleCsv {
9
10 @CsvColumn(number=1)
11 private int id;
12
13 @CsvColumn(number=2, label="氏名")
14 private String name;
15
16 // カラム番号3は読み込まない場合は、定義を行いません。
17
18 @CsvColumn(number=4, label="メールアドレス")
19 private String email;
20
21 // カラム番号5を読み込まない場合は、定義を行いません。
22}
@CsvBean(validateHeader=true)
にして、ヘッダー行の検証を行いたい場合は、定義していないカラムの見出しの定義が必要となるため、
@CsvBean(headers={})
でカラムの見出しの定義を行います。
1import com.github.mygreen.supercsv.annotation.CsvBean;
2import com.github.mygreen.supercsv.annotation.CsvColumn;
3import com.github.mygreen.supercsv.annotation.CsvPartial;
4
5
6@CsvBean(header=true, validateHeader=true) // ヘッダー行の検証を行う
7@CsvPartial(columnSize=5, headers={ // 定義されていないカラムの見出しを定義します。
8 @CsvPartial.Header(number=3, label="電話番号"),
9 @CsvPartial.Header(number=5, label="生年月日")
10})
11public class SampleCsv {
12
13 @CsvColumn(number=1)
14 private int id;
15
16 @CsvColumn(number=2, label="氏名")
17 private String name;
18
19 // カラム番号3を読み込まない場合は、定義を行いません。
20
21 @CsvColumn(number=4, label="メールアドレス")
22 private String email;
23
24 // カラム番号5を読み込まない場合は、定義を行いません。
25
26}
7.2. 部分的なカラムの書き込み
部分的なカラムの書き込みも、読み込み時と同様に行います。 定義していないカラムの値は、空として出力されます。
最後のカラム番号が実際のCSVファイルのカラム番号よりも小さい場合は、
@CsvPartial(columnSize=<カラムサイズ>)
[ JavaDoc ]で、実際のカラムサイズを指定します。ヘッダー行を書き込む場合、定義されていないカラムの見出しは、
column<カラム番号>
の形式となります。定義していないカラムの見出しの値を指定したい場合は、
@CsvBean(headers={})
で設定します。
1import com.github.mygreen.supercsv.annotation.CsvBean;
2import com.github.mygreen.supercsv.annotation.CsvColumn;
3import com.github.mygreen.supercsv.annotation.CsvPartial;
4
5
6@CsvBean(header=true)
7@CsvPartial(columnSize=5, headers={ // 定義されていないカラムの見出しを定義します。
8 @CsvPartial.Header(number=3, label="電話番号"),
9 @CsvPartial.Header(number=5, label="生年月日")
10})
11public class SampleCsv {
12
13 @CsvColumn(number=1)
14 private int id;
15
16 @CsvColumn(number=2, label="氏名")
17 private String name;
18
19 // カラム番号3を書き込みまない場合は、定義を行いません。
20
21 @CsvColumn(number=4, label="メールアドレス")
22 private String email;
23
24 // カラム番号5を書き込みまない場合は、定義を行いません。
25
26}