一般社団法人 全国個人事業主支援協会

COLUMN コラム

OpenCSVは、JavaでCSVファイルを操作するためのライブラリです。これを使用すると、CSVファイルの読み書きが簡単に行えます。

OpenCSVでは、単純な文字列のリストをCSVファイルに書き込むだけでなく、JavaオブジェクトのリストをCSVファイルとして保存することもできます。

今回はまず「単純なデータを書き込む」について説明します。次回は「JavaオブジェクトをCSVファイルに書き込む方法」についてご紹介させていただきます。

以下に、具体的な使い方とカスタマイズの方法を説明します。

1. ライブラリのインストール

Mavenプロジェクトであれば、以下の依存関係をpom.xmlに追加します。

<dependency>
<groupId>com.opencsv</groupId>
<artifactId>opencsv</artifactId>
<version>5.6</version> <!– バージョンは最新のものに置き換えてください –>
</dependency>

Gradleプロジェクトの場合は、build.gradleに以下を追加します。

implementation ‘com.opencsv:opencsv:5.6’

2. 単純なデータを書き込む

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;

public class SimpleCSVWriteExample {

    public static void main(String[] args) {

        String fileName = "output.csv";

        try (CSVWriter writer = new CSVWriter(new FileWriter(fileName))) {

           // CSVに書き込むデータを作成
           String[] header = {"Name", "Age", "Country"};
           String[] record1 = {"テスラ", "30", "USA"};
           String[] record2 = {"トヨタ", "35", "JAPAN"};


           // データを書き込む
           writer.writeNext(header);
           writer.writeNext(record1);
           writer.writeNext(record2);

        } catch (IOException e) {
            e.printStackTrace();
        }
     }
}

3. カスタムセパレータやクォート文字を使用する

デフォルトでは、OpenCSVはカンマ 「, 」をセパレータとして使用し、ダブルクォート「 " 」をクォート文字として使用します。しかし、これらをカスタマイズすることも可能です。

import com.opencsv.CSVWriter;
import java.io.FileWriter;
import java.io.IOException;

public class CustomSeparatorCSVWriteExample {
     public static void main(String[] args) {
         String fileName = "output.csv";
         char customSeparator = ';';
         char customQuote = '\'';

         try (CSVWriter writer = new CSVWriter(new FileWriter(fileName), 
                                             customSeparator, 
                                             customQuote, 
                                             CSVWriter.DEFAULT_ESCAPE_CHARACTER, 
                                             CSVWriter.DEFAULT_LINE_END)) {
             // CSVに書き込むデータを作成
             String[] header = {"Name", "Age", "Country"};
             String[] record1 = {"テスラ", "30", "USA"};
             String[] record2 = {"トヨタ", "35", "JAPAN"};

             // データを書き込む
             writer.writeNext(header);
             writer.writeNext(record1);
             writer.writeNext(record2);
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
}

まとめ

OpenCSVを使用することで、JavaアプリケーションからCSVファイルへのデータの書き込みが容易になります。カスタムセパレータ、クォート文字、オブジェクトのマッピングなど、様々なニーズに対応できるよう柔軟にカスタマイズすることが可能です。使用する機能やオプションに応じて、最適な設定を選択し、効率的にCSVファイルを生成してください。

おまけ

try-with-resources構文は、AutoCloseableインターフェースを実装しているリソース(この場合はCSVWriter)を自動的に閉じます。これにより、明示的にwriter.close()を呼び出す必要がなくなり、コードがシンプルになります。

  • 利点:
    • リソースを確実に解放することで、メモリリークやファイルハンドルリークのリスクを低減できます。
    • リソース管理のコードがシンプルになるため、コードの可読性が向上します。

この記事をシェアする

  • Twitterでシェア
  • Facebookでシェア
  • LINEでシェア