Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
study:java:csv [2008/04/03 08:45] – banana | study:java:csv [2015/07/23 04:33] (現在) – [Issue] banana | ||
---|---|---|---|
行 5: | 行 5: | ||
データ交換に使われることも多い。\\ | データ交換に使われることも多い。\\ | ||
実体はテキストファイルであるため、テキストエディタやワープロなどで開いて直接編集することも可能。\\ | 実体はテキストファイルであるため、テキストエディタやワープロなどで開いて直接編集することも可能。\\ | ||
- | 今回はJavaでCSV形式を書き込む方法を著したいと思う。 | + | 今回はJavaでCSV形式を書き出す方法を紹介する。 |
{{keywords> | {{keywords> | ||
+ | ~~META: | ||
+ | title=How to write out a list of data with a CSV format | ||
+ | ~~ | ||
行 32: | 行 34: | ||
===== Text Output ===== | ===== Text Output ===== | ||
まずはCSV形式に合う文字列を書き出すことだが、便宜のため書き出す項目がリストに入っていると想定しよう。\\ | まずはCSV形式に合う文字列を書き出すことだが、便宜のため書き出す項目がリストに入っていると想定しよう。\\ | ||
- | 項目が入るリストと列を格納するリストが必要となる。リストにリストがあるイメージかな。\\ | + | 項目が入るリストと列を格納するリストが必要となる。リストの中にリストが入っているイメージだ。\\ |
ロジックは意外と簡単だ。リストの項目を順番ごとに**%%StringBuffer%%**に追加していきながらカンマをくっつけることだ。\\ | ロジックは意外と簡単だ。リストの項目を順番ごとに**%%StringBuffer%%**に追加していきながらカンマをくっつけることだ。\\ | ||
- | リストの最後の項目にあったらカンマを削って改行文字を入れ替われば良い。\\ | + | リストの最後の項目にあったらカンマを削って改行文字を入れ替えれば良い。\\ |
- | ソースコードは以下のとおり。 | + | ソースコードを次に示す。 |
<code java> | <code java> | ||
public static String getCsvOutputString(ArrayList list) throws UnsupportedEncodingException { | public static String getCsvOutputString(ArrayList list) throws UnsupportedEncodingException { | ||
行 65: | 行 67: | ||
} | } | ||
- | System.out.println(new String(_sb)); | + | System.out.println(_sb.toString()); |
- | return | + | return _sb.toString(); |
} | } | ||
</ | </ | ||
行 110: | 行 112: | ||
- | ====== Issue ====== | + | |
- | **CSV**の形式上、カンマで区切る為、もしカンマが含まれていたら不具合が発生する。\\ | + | |
- | また、列ごとに改行文字(CR-LF)((CR: | + | ===== Issue ===== |
+ | **CSV**の仕様上、カンマで区切る為、もしカンマが含まれていたら不具合が発生する。\\ | ||
+ | また、列の最後に改行文字(CR-LF)((CR: | ||
そこで、この問題に対応する**Tip**を紹介したいと思う。\\ | そこで、この問題に対応する**Tip**を紹介したいと思う。\\ | ||
カンマ(, | カンマ(, | ||
- | 改行文字の場合は**CR-LF(\r\n)**ではなく**LF(\n)**を使うことを奨励している。\\ | + | 改行文字の場合は**CR-LF(\r\n)**ではなく**LF(\n)**を使うことを奨励している。 |
- | ({{wp> | + | ([[wp> |
以上二つの点を踏まえて対応する方法がこれだ。 | 以上二つの点を踏まえて対応する方法がこれだ。 | ||
<code java> | <code java> | ||
行 127: | 行 131: | ||
// | // | ||
_ret = temp.toString(); | _ret = temp.toString(); | ||
- | _ret = _ret.replaceAll(" | + | |
} | } | ||
return _ret; | return _ret; | ||
行 133: | 行 137: | ||
</ | </ | ||
- | リストの項目を全体にダブルクォーテーション(" | + | リストの項目全体をダブルクォーテーション(" |
- | ====== Reference | + | |
+ | |||
+ | |||
+ | ===== Reference ===== | ||
-[[http:// | -[[http:// | ||
-[[http:// | -[[http:// | ||
+ | ~~DISCUSSION~~ |