• 締切済み

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