javascriptでcsvの1行のカウント方法


OKWaveコミュニティー
新規ユーザー登録(無料)今すぐ登録しよう!!
はじめての方へ OKWaveではこんなことができます!
特集
特集一覧
お金をかけないで満喫したい!
お金をかけないで満喫したい!
秋の大型連休にピッタリ!お金をかけないで楽しく過ごせる方法をご紹介します!
話題のQ&A「地震」編
話題のQ&A「地震」編
今、OKWaveで話題のキーワード「地震」についてのQ&Aを特集!みんなが大注目のQ&Aをチェック!
怖い話特集
怖い話特集
「心霊体験」「怪奇現象」「肝試し」OKWaveの怖い話特集でヒンヤリ楽しくすごしてください。
その他の特集はこちらからご覧下さい
みんなに質問!オススメレシピは?
おすすめリンク

質問

質問者:sanae110 javascriptでcsvの1行のカウント方法
困り度:
  • 困っています
http://blog.sorasol.co.jp/?p=13
↑こちらのサイトのプログラムで、CSVからテーブルを作る方法を利用しています。

上記サイトの内容ですと、CSVの量が分からない場合に対応できないので、行数を数えて表示をさせたいと思っています。

perlでは、ファイル読み込み時に1行ごとに格納できたと思うのですが、javascriptではそのようなことはできるのでしょうか?調べてみたのですが、同じような記述が見当たらず、他の方法も探してみたのですが(改行の場所でカウント?など)分からなかったので、解説しているサイトなどを教えていただければと思います。

よろしくお願いします
質問投稿日時:09/06/23 23:41
質問番号:5069592
この質問に対する回答は締め切られました。

回答

良回答20pt

回答者:think49 JavaScriptでCSV読み込みは実際作った経験がありますので、その観点から。

> perlでは、ファイル読み込み時に1行ごとに格納できたと思うのですが、
「行」とは改行区切りでいいんでしょうか?それとも、「CSVとしての行」でしょうか?
単純な改行区切りで良ければ、split で配列に格納すればいいと思います。
(質問者さんの掲示されたサイトでもそうしています)

var csv = "a,b,c\nd,e,f";
csv = csv.split(/\r\n|[\r\n]/);
alert(csv.length); // 行数をalert

ただし、この方法はデータに改行が含まれている時に正しく読み込めません。
CGIなどで出力していて「改行が別の文字に置き換えられている」ならこの方法でいいと思いますが、
Excelと完全互換が欲しいなら、かなり複雑です。(45行で書けますが、アルゴリズムは何度も練り直しました。)

参考URLとしては
http://jsgt.org/lib/jquery/plugin/csv2table/v001/test.htm
があげられます。説明を読む限りでは、ExcelのCSVとの互換性を保証しているようです。

CSVフォーマットに関しては下記サイトが参考になると思います。

CSVファイルフォーマットの解説:CodeZine
http://codezine.jp/article/detail/2364

とにかく情報が少ないので、トライアンドエラーは必須です。
頑張ってください。
種類:アドバイス
どんな人:経験者
自信:自信あり
回答日時:09/06/24 02:06
回答番号:No.1
この回答へのお礼回答ありがとうございます。

記載していただいたsplitの使い方でうまく動きました!
splitを勘違いして解釈していたようです・・

csvの改行に関して、ぱっと分からなかったのですが、
丁度記載したアドレスのページにあった
lineData = str.split(CR);を利用してみたところ
行数+1の値が出てきたので、-1をして
if (i < 4){

if (i < lineData.length-1){
として、解決しました。
(きちんとした意味を理解していないので
もう少しよく見てみないといけませんが・・)

アドレスを頂いたjquery.csv2table.jsを使ったやり方だと、
どうしてもexcelのcsvアップでは、UTF-8のプログラムで
日本語が文字化けしてしまい、うまくいかなかったので
上記の方法でいってみようと思います。
(まだmacで未確認ですが・・)


プログラマが多忙なので、ちょっとした事は手伝おうと思って
やってみているのですが勉強が足りないようです。
教えていただいたサイトも参考に勉強したいと思います。

本当にありがとうございました^^