• 締切済み

javascriptでCSVを呼出しvlookup

javascriptでCSVデータをを呼出して、あるinputに入力したデータでCSVをvlookupし、該当した行のある列を別のinputに書くということがしたいです。 こちらの記事はテーブルを参照していますが、 http://okwave.jp/qa/q6750899.html 外部CSVデータを直接読むコードはないでしょうか。 どうか助けてください。 よろしくお願いします。

みんなの回答

回答No.6

ていせい。 ひどうきではないので Ajax とよばれない。 test.csv 001 (\t) abc (\t) 400 (\r\n) 002 (\t) def (\t) 500 (\r\n) のように。 もじコードも、きをつけてね

回答No.5

<!DOCTYPE html> <title>VLOOKUP modoki のさんぷるぷる &amp; なにかしら</title> <body> <form action="#" onsubmit="return false">  <table>   <tr>    <td>     <input type="text" id="hoge0" name="hoge0" onchange="      document.getElementById('hoge1').value=VLOOKUP(this.value, 0, 1);      document.getElementById('hoge2').value=VLOOKUP(this.value, 0, 2);     ">    <td>     <input type="text" id="hoge1" name="hoge1">    <td>     <input type="text" id="hoge2" name="hoge2">  </table> </form> <script> (function () {  var reg_field = /\t/g;    function getFile (fName) {   var req;      try {    req = new XMLHttpRequest;   } catch (er) {    return '';   }   req.open ('GET', fName, false);   req.send ('');   return (200 === req.status)    ? req.responseText    : '';  }      function toAry (csv) {   return (csv)    ? csv.split (/\r\n|\r|\n/g)       .map (spliter)    : [];  }      function spliter (rec) {   return rec.split (reg_field);  }      this.createVLookUp = function (fname) {   var csv = [];      if (fname)    csv = toAry (getFile (fname));   return function (key, search, row) {    var i;    var I = csv.length;        for (i = 0; i < I; i++)     if (csv[i][search] == key)      return csv[i][row];    return '';   };  };   })(); var VLOOKUP = createVLookUp ('test.csv'); </script> -- ふぃーるどのくぎりは、タブコード。 だぶるくおーととか、しんぐるくおーとはつかわないで ひどうきなので Ajax とよばれないらしい じつようには、ほどとおい。 ふぁいあ~ふぉっくすとか、くろむならうごくかな? test.csv 001 abc 400 002 def 500 003 ghi 600

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

手前味噌ですが、rfc4180.js というライブラリがあります。 http://vird2002.s8.xrea.com/javascript/rfc4180.html http://www.kasai.fm/wiki/rfc4180jp を読みながら、JavaScript で CSV -> array の変換器を実装しました。 二次元配列になるので for 文で回せば vlookup も可能です。 # 改めて読むと、CSV -> array の変換部だけ別コードにした方が良かったかなー。(以前、指摘を受けたところ)

回答No.3

う~ん。「データバインド」なんてものもあるよ。ie ようだけどね。

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.2

 う~ん。CSVファイルをAjaxのレスポンスとして入手して自前で解析して自分でvlookupの動作を作るというのであればそれはできると思うんだけど、いろいろ試行錯誤が必要かもしれないね。  まず、Ajaxについては、私はjQueryというJavascriptライブラリーがとても好き(というかこれしか知らない)。jQueryでAjaxをするのはすごく簡単で、jQueryを読み込んだら後はjQuery.get()やjQuery.post()というメソッドを実行するだけだ。  で、jQuery.post()でCSVファイルをリクエストすれば、成功時にコールバック関数が受け取るのはそのまんまCSVファイルの中身だ。  これで「外部CSVデータを直接読む」という事は実現できる。後はvlookup的動作だが、これは技術的にむつかしい話ではないので特に解説は必要ないだろう。  外部CSVがクライアントのパソコンのCドライブ直下のtest.csvとかだと・・・・jQueryで読み込むパスの指定をどうすればいいのか、難しそうだね(パスが決まっているのであれば読み込み可能)。  ローカルファイルを読むのにJavascript File APIというものもあるにはあるけど、現時点ではまだまだ現実的とは言い難い。

sunawachi2
質問者

お礼

>>>> これで「外部CSVデータを直接読む」という事は実現できる。後はvlookup的動作だが、これは技術的にむつかしい話ではないので特に解説は必要ないだろう。 この部分がネット上でなかなか見つからないのです。

  • Gletscher
  • ベストアンサー率23% (1525/6504)
回答No.1

Javascriptでファイル操作はできません。

関連するQ&A

  • Perl Vlookupみたいに

    恐れ入ります。 PerlでVlookupみたいに、マッチしたものの閲覧をしたいのですが、 どのようにしたら良いでしょうか。 lookup.cgi code.csv data.csv というファイルを用意して、 code.csvには、7桁のコードの一覧が並び、 data.csvの中でマッチした7桁のコードの別列のデータの一覧を取得したいのですが、 つまり、code.csvに書かれている7桁のコードにマッチする全てのデータを、 data.csvの中の指定した列から抜き出して羅列する感じです。 よろしくお願いします。

    • ベストアンサー
    • Perl
  • CSV→タブ区切り

    CSVファイルでデータを取り込もうとしてますが、金額にカンマが入ってたりして、列がずれたりします。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=361247 ↑等を参照した上ですが、タブ区切りデータでインポートしてみようかと思います。 CSVファイルをタブ区切りファイルに変換するにはどうしたらよいでしょうか?そういうコードはありますでしょうか?

  • 【Jquery】csv2tableを使ってcsvを呼び出した表について

    JQueryのcsv2tableをつかってcsvを表に吐き出ししているものを Webに設置しています。 表示する際に、csvの0列目と1列目と3列目だけを表示させられるように下記のようなタグをいれています。 <input class = "btn1" type = "button" onclick = "$('#view54').csv2table('./data/Book12-utf8.csv',{ select : [0,1,3] });" value="Run select:[0,1,3]"> <div id="view54"></div> 参考:http://jsgt.org/lib/jquery/plugin/csv2table/v002/test-tm.htm#nview54 ここに、下記タグのように、偶数行だけ色を変えるよう指定したいのですがうまくいきません。 <input class = "btn1" type = "button" onclick = " $('#view2').csv2table('./test.txt',{ onload : function(id,op,data,ary){ $('tr:even','#'+id).css('background','#eee') } })" value = "Load CSV"> ここにある    onload : function(id,op,data,ary){ $('tr:even','#'+id).css('background','#eee') } が必要と思い、 <input class = "btn1" type = "button" onclick = "$('#view54').csv2table('./data/Book12-utf8.csv',{ select : [0,1,3]     onload : function(id,op,data,ary){ $('tr:even','#'+id).css('background','#eee') } });" value="Run select:[0,1,3]"> としたのですが、こうするとcsvが表示されなくなります。 おそらく書き方がどこかおかしいと思うのですが、どこがおかしいか教えてください。

    • ベストアンサー
    • AJAX
  • Excel2010のVlookupについて

    関数のVlookupについて困っております。 Vlookupで他シートのA列を参照した際に、行数233行目以降に記載してある参照先が全て#N/Aで返されてしまい困っております。233行目以前に試しに移動してみましたが、正しくVlookup関数は処理されました。 データの問題ではなさそうに思えるのですが、ほかに何か原因等考えられますでしょうか? 分かる方、同じ現象を体験した方等対処の仕方を教えていただけると幸いです。 よろしくお願いします。

  • jquery.csv2tablについて

    jquery.csv2table使用時、行絞込みをしたいのですが、以下のように「==」の条件だと GoogleChromeのみ絞込みが行えません。 <input class="btn1" type = "button" onclick="$('#viewSettingWhere').csv2table('./data/XXXX.csv',{ where : [{'年齢':'==5'}] });" value="where : [{'年齢':'==5'}]"> Firefox、IE8では正常に絞込みが行えます。 また、以下の条件にすると、GoogleChromeでも絞込みは行えます。 <input class="btn1" type = "button" onclick="$('#viewSettingWhere').csv2table('./data/XXXX.csv',{ where : [{'年齢':'<=5','&&','>=5'}] });" value="where : [{'年齢':'絞込み'}]"> 文字列を比較したいので「==」を使用して絞込みを行いたいのですが、どなたかご教授していただけないでしょうか。 宜しくお願い致します。

  • MYSQLでCSVインポートが一行目しかされません

    phpMyAdminで空のテーブルにCSVファイルをインポートをしているのですが、なぜか一行目だけしかインポートされずに困っています。 フィールド数は合っているのですが、なにか思い当たる原因があれば教えていただけますでしょうか。 こちらはチェックしていて、テキストエディタで開いてカンマの位置や数も合っているはずなのですが。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1132222936 ちなみにデータは、 フィールド名 a(varchar(20)),b(float(6,4)) に対して 値 1,1.34 2,1.21 3,1.25 のような単純なデータです。 すでにテーブルとフィールドは作ってあり、CSVデータは 1,1.34 2,1.21 3,1.25 というデータのみです。 何度やっても、「1,1.34」の一行目だけしかインポートされません。

    • ベストアンサー
    • MySQL
  • ExcelのVLOOKUP関数の動作をMySQLでやる方法ありますか?

    ExcelのVLOOKUP関数の動作をMySQLで やりたいのですが、方法はあるのでしょうか? たとえばExcelでは Sheet1に顧客情報 A列      B列  C列 利用者コード  名前 電話番号 AAA      田中 03-0000-0000 BBB      佐藤 03-0001-0001 CCC      山口 03-0002-0002 Sheet2に利用履歴 A列 B列      C列 No. 利用者コード 名前 1  AAA  =VLOOKUP(B2,Sheet1!A:C,2,0) 2  CCC  =VLOOKUP(B3,Sheet1!A:C,2,0) 3  AAA  =VLOOKUP(B4,Sheet1!A:C,2,0) 4  BBB  =VLOOKUP(B5,Sheet1!A:C,2,0) 5  CCC  =VLOOKUP(B6,Sheet1!A:C,2,0) ExcelではSheet2を上記のようにすれば 利用者コードからSheet1のB列に入力されて いる名前を参照できますよね。 MySQLのテーブルは テーブル1はSheet1と同じ テーブル2はNo. 利用者コードだけで名前はありません。 Sheet2のような出力結果・参照方法を MySQLでやる方法はありますか? SELECT文で出力できるのならベストですが その他の方法がありましたらそちらの 方法も教えていただきたいです。 やはりMySQLのレコードをCSV形式か何かで出力して Excelで処理したほうがいいんでしょうか? どなたかご教授願います。

    • ベストアンサー
    • MySQL
  • javascriptでCSVを読み込み表示する方法を探しています。

    javascriptでCSVを読み込み表示する方法を探しています。 <div id="hoge"> <ul class="hogehoge"> <li><a href="1行目の1つ目のデータ">1行目の2つ目のデータ</a></li> <li><a href="2行目の1つ目のデータ">2行目の2つ目のデータ</a></li> ・ ・ ・ </ul> </div> で、ulに囲まれた部分をjavascriptで生成させたいのですが・・・ (ulのところのCSS指定は、idではなく、classにしたいです) よろしくお願いいたします。

  • VisualBasicからcsvファイルを読み込む

    VisualBasicからcsvファイルを以下のようなプログラムで読み込んでいます。 Open ファイルパス For Input Shared As #1 Do Until EOF(1): Input #1, A(i), B(i): i = i + 1: DoEvents: Loop Close #1 n行2列のcsvファイルとn行3列のcsvファイルを読み込んだ時に A(2)にセルB1、B(2)にセルB2の値を代入したいです。 現状だとn行3列のcsvファイルを読み込んだ時に A(2)にはセルA3の値が入ってしまいます。 n行3列の3列目のデータは無視したいです。

  • 沢山のCSVを一シートにまとめるコマンド

    フォルダ内に1000ほどのCSVファイルがあります。 ファイルは18列で、一行目は常にタイトル行になっています。 行数は、まちまちで2~40程。全部外部データの取り込みで 取り込むと30000行ほどになります。 2行目以降からのデータを一括でまとめたいのですが よい方法はないでしょうか。

専門家に質問してみよう