はじめに
JavaでCSVファイルを出力するには、Java標準で提供されているAPIを使うか、CSVファイルを扱うためのライブラリを使うかのどちらかです。
本記事では、Java標準で提供されているAPIを使いCSVファイル出力を行う方法について紹介します。
スポンサーリンク
JavaでCSVファイルを出力する方法
PrintWriterによる書き込み
JavaでCSVファイルを出力するには、書き込みに特化したクラスである「PrintWriter」を使うことで簡単に実装できます。
次の例では、CsvDataBeanクラスに格納されている情報をCSVファイルに出力しています。また今回の例では、文字コードを「Shift-JIS」にしています。
[PrintWriterの使用例]
package file.csv;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
public class CsvWriteSample {
/*** 文字コード */
private static final String CSV_CHARSET = "Shift-JIS";
/*** 改行コード */
private static final String LINE_FEED_CODE = System.getProperty("line.separator");
/*** 区切り文字(カンマ) */
private static final String DELIMITER_COMMA = ",";
public static void main(String[] args) {
// CSVファイルに書き込みするためのデータ作成
List<CsvDataBean> list = new ArrayList<CsvDataBean>();
list.add(new CsvDataBean("1","山田一郎","30","東京都渋谷区"));
list.add(new CsvDataBean("2","佐藤二郎","25","大阪府大阪市"));
list.add(new CsvDataBean("3","鈴木三郎","22","神奈川県横浜市"));
// CSVファイル作成
CsvWriteSample csvWriteSample = new CsvWriteSample();
csvWriteSample.writeCsv("C:\\work\\test2.csv", list);
}
private void writeCsv(String file, List<CsvDataBean> list) {
try (PrintWriter pw = new PrintWriter(file, CSV_CHARSET)) {
// ヘッダ情報
pw.print("No");
pw.print(DELIMITER_COMMA);
pw.print("名前");
pw.print(DELIMITER_COMMA);
pw.print("年齢");
pw.print(DELIMITER_COMMA);
pw.print("住所");
pw.print(LINE_FEED_CODE);
for(CsvDataBean bean : list) {
pw.print(bean.getNo());
pw.print(DELIMITER_COMMA);
pw.print(bean.getName());
pw.print(DELIMITER_COMMA);
pw.print(bean.getAge());
pw.print(DELIMITER_COMMA);
pw.print(bean.getAddress());
pw.print(LINE_FEED_CODE);
}
} catch (IOException e) {
// ここにエラー処理
}
}
}
上記の例では、close漏れがないように「try-with-resources」を使用しています。(※try-with-resources文は、処理の終わりで各リソースを確実に閉じてくれる)
[出力されたCSVファイル]
No,名前,年齢,住所
1,山田一郎,30,東京都渋谷区
2,佐藤二郎,25,大阪府大阪市
3,鈴木三郎,22,神奈川県横浜市
[CsvDataBeanクラス]
/**
* CSVファイルの内容を格納するBeanクラス
*/
public class CsvDataBean {
/**
* コンストラクタ
* @param no No
* @param name 名前
* @param age 年齢
* @param address 住所
*/
public CsvDataBean(String no, String name, String age, String address) {
this.no = no;
this.name = name;
this.age = age;
this.address = address;
}
/**
* No
*/
private String no;
/**
* 名前
*/
private String name;
/**
* 年齢
*/
private String age;
/**
* 住所
*/
private String address;
/**
* Noの取得
* @return No
*/
public String getNo() {
return no;
}
/**
* Noの設定
* @param no No
*/
public void setNo(String no) {
this.no = no;
}
/**
* 名前の取得
* @return 名前
*/
public String getName() {
return name;
}
/**
* 名前の設定
* @param name 名前
*/
public void setName(String name) {
this.name = name;
}
/**
* 年齢の取得
* @return 年齢
*/
public String getAge() {
return age;
}
/**
* 年齢の設定
* @param age 年齢
*/
public void setAge(String age) {
this.age = age;
}
/**
* 住所の取得
* @return 住所
*/
public String getAddress() {
return address;
}
/**
* 住所の設定
* @param address 住所
*/
public void setAddress(String address) {
this.address = address;
}
}
helpful
この記事は役に立ちましたか?