Writing /volume1/Web/Public/dokuwiki/data/log/deprecated/2024-11-15.log failed

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
study:java:csv [2008/04/03 08:36] bananastudy:java:csv [2015/07/23 04:33] (現在) – [Issue] banana
行 5: 行 5:
 データ交換に使われることも多い。\\ データ交換に使われることも多い。\\
 実体はテキストファイルであるため、テキストエディタやワープロなどで開いて直接編集することも可能。\\ 実体はテキストファイルであるため、テキストエディタやワープロなどで開いて直接編集することも可能。\\
-今回はJavaでCSV形式を書き込む方法を著したいと思う+今回はJavaでCSV形式を書き出す方法を紹介する
  
 {{keywords> comma CR-LF 改行文字 カンマ}} {{keywords> comma CR-LF 改行文字 カンマ}}
 +~~META: 
 +title=How to write out a list of data with a CSV format 
 +~~
  
  
行 29: 行 31:
 </code> </code>
  
-====== 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 {
行 64: 行 67:
  
         }         }
-        System.out.println(new String(_sb)); +        System.out.println(_sb.toString()); 
-        return new String(_sb);+        return _sb.toString();
     }     }
 </code> </code>
  
-====== Set Response Header ======+ 
 +===== Set Response Header =====
 CSVファイルで出力するにはブラウザにファイルの形式や名前、容量などを知らせる必要がある。\\ CSVファイルで出力するにはブラウザにファイルの形式や名前、容量などを知らせる必要がある。\\
  
行 82: 行 86:
  
  
-====== Write out to output stream ======+ 
 +===== Write out to output stream =====
 %%HttpServletResponse%%から**%%OutputStream%%**を取得してこのストリムに %%HttpServletResponse%%から**%%OutputStream%%**を取得してこのストリムに
 前のリストから作り出した文字列を出力する。\\ 前のリストから作り出した文字列を出力する。\\
行 106: 行 111:
  
  
-====== Issue ====== + 
-**CSV**の形式上、カンマで区切る為、もしカンマが含まれていたら不具合が発生する。\\ + 
-また、列ごとに改行文字(CR-LF)((CR:Carriage Return,  LF:Line Feed))入れる為、もし改行文字が入っている場合問題になる。\\+ 
 +===== Issue ===== 
 +**CSV**の仕様上、カンマで区切る為、もしカンマが含まれていたら不具合が発生する。\\ 
 +また、列の最後に改行文字(CR-LF)((CR:Carriage Return, LF:Line Feed))入れる為、もし改行文字が入っている場合問題になることがある。((excelデータインポート機能を利用してcsvを開く場合、改行文字で改行されてしまうので、問題になる。 しかし、ダブルクリックで開く場合は、改行文字をダブルクオーテーション(")で囲むと問題ない。))\\
 そこで、この問題に対応する**Tip**を紹介したいと思う。\\ そこで、この問題に対応する**Tip**を紹介したいと思う。\\
 カンマ(,)に関してはCSVの仕様(specification)でダブルクオーテーション(")で囲むようになっている。\\ カンマ(,)に関してはCSVの仕様(specification)でダブルクオーテーション(")で囲むようになっている。\\
-改行文字の場合は**CR-LF(\r\n)**ではなく**LF(\n)**を使うことを奨励している。\\+改行文字の場合は**CR-LF(\r\n)**ではなく**LF(\n)**を使うことを奨励している。 
 +([[wp>Comma-separated_values]]に行けばこれらの例が載っている。)\\
 以上二つの点を踏まえて対応する方法がこれだ。 以上二つの点を踏まえて対応する方法がこれだ。
 <code java> <code java>
行 122: 行 131:
        //改行文字の削除        //改行文字の削除
        _ret = temp.toString();        _ret = temp.toString();
-       _ret = _ret.replaceAll("\r\n", "\n");+      _ret = _ret.replaceAll("\r\n", "\n");
     }     }
     return _ret;     return _ret;
行 128: 行 137:
 </code> </code>
  
-リストの項目全体ダブルクォーテーション(")囲んで中のCR-LFをLFで入れ替える処理だ。+リストの項目全体ダブルクォーテーション(")囲んで中のCR-LFをLFで入れ替える処理だ。
  
-====== Reference ======+ 
 + 
 + 
 +===== Reference =====
   -[[http://en.wikipedia.org/wiki/Comma-separated_values]] : Wikipedia   -[[http://en.wikipedia.org/wiki/Comma-separated_values]] : Wikipedia
   -[[http://supercsv.sourceforge.net/csvSpecification.html]] : CSV Specification   -[[http://supercsv.sourceforge.net/csvSpecification.html]] : CSV Specification
  
 +~~DISCUSSION~~

QR Code
QR Code study:java:csv (generated for current page)