読者です 読者をやめる 読者になる 読者になる

jqueryでcsv を処理するために

csv4j のように、きちんと RFC4810 に沿って処理する JavaScript / jQuery を書いている人が見当たらない。
csv4jのように、callback関数を書きたい時要求もあるだろう。
単純に split して配列にしている人ばかり。

見つけたのが、Google code にある jquery-csv

まず基本的なところから触ってみる。

文字列データをセパレータで区切って配列にする関数は、$.csv.toArray

書式は、

$.csv.toArray( data , [ options ] , [ function ] )

ほとんどのケースは、オプションも callback関数も省略して使うのであろう。

オプションは、、
 { separator: ',',
    delimiter: '\n' }

のように、セパレータと行区切りデリミタを指定できる。

ただこのセパレータの指定時に癖があり、カンマを指定する場合はデリミタ記述を省略できるが、ハイフン '-' を指定すると、、
  CSVDataError: Illegal State [Row:1][Col:1]
となってしまう。カンマ以外でこのデリミタを省略できない。

callback 関数を書くために、この options を書くわけだがいちいち、上のように書くのもセンスがない。ということなのか?

$.csv.toArray( data , { }, function(e, d){ ... } );

と、options を空で書けるようになっている。

callback 関数は、、、
関数の第2引数に、CSVパースしたデータが配列として渡される。

つまり、以下のサンプルのように処理するが、注意が必要なのは、
callback 関数を書くと、toArray 関数はリターン値を返さなくなる。。


$.csv.toArray(csvdata, {separator: '-', delimiter: '\n' }, function(e,d){
   for(var i=0, len=d.length; i < len;i++){
      console.log(d[i]);
   }
}
);


使い方しだいであり、適度に利用すれば良いだろう。