0
0

More than 3 years have passed since last update.

【Java】OpenCSVでファイルの値を変換して取り込む

Last updated at Posted at 2020-10-13

概要

JavaにはCSVファイルをBeanに取り込むためのライブラリで、OpenCSVというものがあります。JavaのCSVライブラリ「opencsv」の記事にある通り、列名とBeanのプロパティ名を紐付けて取り込むことができます。
今回の記事は、ファイルの値を変換してBeanに取り込むときの対応を紹介します。

対応

こちらのStackOverflowに書いてあるのが日付の変換例です。アノテーションのconverterに変換用のクラスを設定して、変換します。

実装サンプル

文字列から日付の変換例を、実装サンプルとしてのせます。

ファイル中のcreated_at列をLocalDateTime型に変換します。

SampleCsvBean.java
public class SampleCsvBean {
    @CsvBindByName(column = "id")
    private Long id;
    @CsvBindByName(column = "name")
    private String name;
    @CsvCustomBindByName(column = "created_at", converter = SampleConverter.class)
    private LocalDateTime createdAt;
}

ファイルには20140101 00:00:00の形式で、日付の値が設定されているとします。
これをconverterのクラス内で、LocalDateTimeにフォーマットします。

SampleConverter.java
public class SampleConverter extends AbstractBeanField {
    @Override
    protected Object convert(String s) throws CsvDataTypeMismatchException, CsvConstraintViolationException {
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss");
        return LocalDateTime.parse(s, dtf);
  }
}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0