Java/CSVを取り扱う
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**CSVを読み込むJavaライブラリ [#af8faa1a]
仕事ではよくCSVファイルを読み込んで云々といった業務処理が...
ちょっと触ったところ非常にシンプルで使いやすかったのでメ...
**ダウンロード [#o48fbf97]
[[opencsv - an open source csv parser for Java>http://ope...
**使ってみる。 [#fc391ad0]
Eclipseのプロジェクトとしてアップしました。 http://www.ma...
サンプルは以下のような感じです
-sample.csv
姓,名,年齢
とうきょう,たろう,33
東京,太郎,15
-プログラム
public class Main {
public static void main(String[] args) throws IOExcept...
CSVReader reader = new CSVReader(new FileReader("sam...
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
// nextLine[] is an array of values from the line
System.out.println(nextLine[0] + " " + nextLine[1]...
}
}
}
実行結果は以下の通り。
姓 名 etc...
とうきょう たろう etc...
東京 太郎 etc...
csvファイルをパースして、適切に分割してくれています。
サンプルは単純でしたが、ダブルクォート("")で囲まれたCSVや...
姓,名,年齢
とうきょう,"た
ろう",33
東京,太郎,15
こんなたち悪いCSVなども、正しく取り扱うことができます。す...
**JavaBeansにマッピングする [#l241c4a1]
さて先のように、簡単にCSVをパースすることができましたが、...
-sample.csv
姓,名,年齢
とうきょう,たろう,33
東京,太郎,15
を、
-JavaBeans
public class CSVSampleBean implements Serializable {
private String last_name;
private String first_name;
private String age;
// Getter/Setterは省略
@Override
public String toString() {
return new ToStringBuilder(this).append("姓", last_n...
first_name).append("年齢", age).toString();
}
}
にマッピングする事ができるんですね。CSVをJavaBeansにマッ...
-CSVの1列目はフィールド名○○、2列目は△△ と指定する
-CSVの1行目はヘッダ行と見なして、1行目の文字列群と、Jav...
などいろいろな方法で対応付けを指定することができます。
**JavaBeansにマッピングする [#v0910948]
実際にやってみます。Mappingの指定は、
-sample.csv
姓,名,年齢
とうきょう,たろう,33
東京,太郎,15
...
の「姓,名,年齢」とJavaBeansのフィールド「last_name,first_...
public class HeaderColumnNameTranslateMain {
private static final String CSV_FILE = "sample.csv";
public static void main(String[] args) throws IOExcept...
HeaderColumnNameTranslateMappingStrategy strat = new...
strat.setType(CSVSampleBean.class);
Map<String, String> map = createMapping();
strat.setColumnMapping(map);
CsvToBean csv = new CsvToBean();
List<CSVSampleBean> list = csv.parse(strat, new File...
for (CSVSampleBean bean : list) {
System.out.println(bean);
}
}
// CSVのヘッダ名が、どのフィールドにマッピングすればい...
// map.put("[ヘッダ名]", "[フィールド名]");
// この場合は、ヘッダ行が無視される。
private static Map<String, String> createMapping() {
Map<String, String> map = new HashMap<String, String...
map.put("姓", "last_name");
map.put("名", "first_name");
map.put("年齢", "age");
return map;
}
}
実行結果は以下の通り
nu.mine.kino.csv.CSVSampleBean@833955[姓=とうきょう,名=...
nu.mine.kino.csv.CSVSampleBean@13582d[姓=東京,名=太郎,年...
このようにマッピングを指定するだけで、自動的にJavaBeansを...
ちなみに
List<CSVSampleBean> list = csv.parse(strat, new FileRead...
この処理ですが、
CSVReader reader = new CSVReader(new FileReader(CSV_FILE...
List<CSVSampleBean> list = csv.parse(strat, reader);
というように自分でCSVReaderを生成して渡すこともできます。...
CSVReader reader = new CSVReader(new FileReader(CSV_FILE...
として自分でCSVReaderを作成するばあいに使用します。
**プログラム中でなく、設定ファイルとかでマッピングを指定...
さてプログラム中にMapを用いてCSVヘッダ名とフィールド名を...
[[au.com.bytecode.opencsv.bean.HeaderColumnNameAutoTransl...
姓=last_name
名=first_name
年齢=age
というテキストファイル((該当のJavaBeansと同じディレクトリ...
具体的なコードは以下の通り。
public class HeaderColumnNameTranslateMain3 {
private static final String CSV_FILE = "sample.csv";
public static void main(String[] args) throws IOExcept...
HeaderColumnNameAutoTranslateMappingStrategy strat =...
// FileInputStream in = new FileInputStream(new File...
// strat.setInputStream(in);
strat.setType(CSVSampleBean.class);
CsvToBean csv = new CsvToBean();
List<CSVSampleBean> list = csv.parse(strat, new File...
for (CSVSampleBean bean : list) {
System.out.println(bean);
}
}
}
コメントアウトしてますが、設定ファイルはプログラムで指定...
**TIPS集 [#oa4d3768]
以下書き途中。
***CSVの順番とJavaBeansのフィールドをマッピングする方法 [...
CSVの順番(何列目のデータ)とJavaBeansのフィールドをマッピ...
ColumnPositionMappingStrategyをつかえばOKです。
ColumnPositionMappingStrategy strat = new ColumnPosition...
strat.setType(CSVSampleBean.class);
// CSVの順番で、どのフィールドにマッピングすればいいかを...
String[] columns = new String[] { "last_name", "first_na...
strat.setColumnMapping(columns);
どのフィールドにCSVのどの列のデータをマッピングするかを指...
***CSVのヘッダ行のヘッダ名称とフィールドをマッピングする...
HeaderColumnNameTranslateMappingStrategyをつかう
***CSVのヘッダ行のヘッダ名称がそのままフィールド名の場合 ...
HeaderColumnNameMappingStrategyをつかう
**関連リンク [#p5fcd061]
-[[opencsv - an open source csv parser for Java>http://op...
----
この記事は
#vote(おもしろかった[103],そうでもない[26])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**CSVを読み込むJavaライブラリ [#af8faa1a]
仕事ではよくCSVファイルを読み込んで云々といった業務処理が...
ちょっと触ったところ非常にシンプルで使いやすかったのでメ...
**ダウンロード [#o48fbf97]
[[opencsv - an open source csv parser for Java>http://ope...
**使ってみる。 [#fc391ad0]
Eclipseのプロジェクトとしてアップしました。 http://www.ma...
サンプルは以下のような感じです
-sample.csv
姓,名,年齢
とうきょう,たろう,33
東京,太郎,15
-プログラム
public class Main {
public static void main(String[] args) throws IOExcept...
CSVReader reader = new CSVReader(new FileReader("sam...
String[] nextLine;
while ((nextLine = reader.readNext()) != null) {
// nextLine[] is an array of values from the line
System.out.println(nextLine[0] + " " + nextLine[1]...
}
}
}
実行結果は以下の通り。
姓 名 etc...
とうきょう たろう etc...
東京 太郎 etc...
csvファイルをパースして、適切に分割してくれています。
サンプルは単純でしたが、ダブルクォート("")で囲まれたCSVや...
姓,名,年齢
とうきょう,"た
ろう",33
東京,太郎,15
こんなたち悪いCSVなども、正しく取り扱うことができます。す...
**JavaBeansにマッピングする [#l241c4a1]
さて先のように、簡単にCSVをパースすることができましたが、...
-sample.csv
姓,名,年齢
とうきょう,たろう,33
東京,太郎,15
を、
-JavaBeans
public class CSVSampleBean implements Serializable {
private String last_name;
private String first_name;
private String age;
// Getter/Setterは省略
@Override
public String toString() {
return new ToStringBuilder(this).append("姓", last_n...
first_name).append("年齢", age).toString();
}
}
にマッピングする事ができるんですね。CSVをJavaBeansにマッ...
-CSVの1列目はフィールド名○○、2列目は△△ と指定する
-CSVの1行目はヘッダ行と見なして、1行目の文字列群と、Jav...
などいろいろな方法で対応付けを指定することができます。
**JavaBeansにマッピングする [#v0910948]
実際にやってみます。Mappingの指定は、
-sample.csv
姓,名,年齢
とうきょう,たろう,33
東京,太郎,15
...
の「姓,名,年齢」とJavaBeansのフィールド「last_name,first_...
public class HeaderColumnNameTranslateMain {
private static final String CSV_FILE = "sample.csv";
public static void main(String[] args) throws IOExcept...
HeaderColumnNameTranslateMappingStrategy strat = new...
strat.setType(CSVSampleBean.class);
Map<String, String> map = createMapping();
strat.setColumnMapping(map);
CsvToBean csv = new CsvToBean();
List<CSVSampleBean> list = csv.parse(strat, new File...
for (CSVSampleBean bean : list) {
System.out.println(bean);
}
}
// CSVのヘッダ名が、どのフィールドにマッピングすればい...
// map.put("[ヘッダ名]", "[フィールド名]");
// この場合は、ヘッダ行が無視される。
private static Map<String, String> createMapping() {
Map<String, String> map = new HashMap<String, String...
map.put("姓", "last_name");
map.put("名", "first_name");
map.put("年齢", "age");
return map;
}
}
実行結果は以下の通り
nu.mine.kino.csv.CSVSampleBean@833955[姓=とうきょう,名=...
nu.mine.kino.csv.CSVSampleBean@13582d[姓=東京,名=太郎,年...
このようにマッピングを指定するだけで、自動的にJavaBeansを...
ちなみに
List<CSVSampleBean> list = csv.parse(strat, new FileRead...
この処理ですが、
CSVReader reader = new CSVReader(new FileReader(CSV_FILE...
List<CSVSampleBean> list = csv.parse(strat, reader);
というように自分でCSVReaderを生成して渡すこともできます。...
CSVReader reader = new CSVReader(new FileReader(CSV_FILE...
として自分でCSVReaderを作成するばあいに使用します。
**プログラム中でなく、設定ファイルとかでマッピングを指定...
さてプログラム中にMapを用いてCSVヘッダ名とフィールド名を...
[[au.com.bytecode.opencsv.bean.HeaderColumnNameAutoTransl...
姓=last_name
名=first_name
年齢=age
というテキストファイル((該当のJavaBeansと同じディレクトリ...
具体的なコードは以下の通り。
public class HeaderColumnNameTranslateMain3 {
private static final String CSV_FILE = "sample.csv";
public static void main(String[] args) throws IOExcept...
HeaderColumnNameAutoTranslateMappingStrategy strat =...
// FileInputStream in = new FileInputStream(new File...
// strat.setInputStream(in);
strat.setType(CSVSampleBean.class);
CsvToBean csv = new CsvToBean();
List<CSVSampleBean> list = csv.parse(strat, new File...
for (CSVSampleBean bean : list) {
System.out.println(bean);
}
}
}
コメントアウトしてますが、設定ファイルはプログラムで指定...
**TIPS集 [#oa4d3768]
以下書き途中。
***CSVの順番とJavaBeansのフィールドをマッピングする方法 [...
CSVの順番(何列目のデータ)とJavaBeansのフィールドをマッピ...
ColumnPositionMappingStrategyをつかえばOKです。
ColumnPositionMappingStrategy strat = new ColumnPosition...
strat.setType(CSVSampleBean.class);
// CSVの順番で、どのフィールドにマッピングすればいいかを...
String[] columns = new String[] { "last_name", "first_na...
strat.setColumnMapping(columns);
どのフィールドにCSVのどの列のデータをマッピングするかを指...
***CSVのヘッダ行のヘッダ名称とフィールドをマッピングする...
HeaderColumnNameTranslateMappingStrategyをつかう
***CSVのヘッダ行のヘッダ名称がそのままフィールド名の場合 ...
HeaderColumnNameMappingStrategyをつかう
**関連リンク [#p5fcd061]
-[[opencsv - an open source csv parser for Java>http://op...
----
この記事は
#vote(おもしろかった[103],そうでもない[26])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: