タイムマシーンがあったら、過去と未来どちらに行く?

javascriptでCSVデータをを呼出して、あるinputに入力したデータでCSVをvlookupし、該当した行のある列を別のinputに書くということがしたいです。

こちらの記事はテーブルを参照していますが、
http://oshiete.goo.ne.jp/qa/6750899.html

外部CSVデータを直接読むコードはないでしょうか。

どうか助けてください。
よろしくお願いします。

A 回答 (6件)

ていせい。



ひどうきではないので Ajax とよばれない。


test.csv
001 (\t) abc (\t) 400 (\r\n)
002 (\t) def (\t) 500 (\r\n)

のように。
もじコードも、きをつけてね
    • good
    • 0

<!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
001abc400
002def500
003ghi600
    • good
    • 0

手前味噌ですが、rfc4180.js というライブラリがあります。


http://vird2002.s8.xrea.com/javascript/rfc4180.h …

http://www.kasai.fm/wiki/rfc4180jp を読みながら、JavaScript で CSV -> array の変換器を実装しました。
二次元配列になるので for 文で回せば vlookup も可能です。

# 改めて読むと、CSV -> array の変換部だけ別コードにした方が良かったかなー。(以前、指摘を受けたところ)
    • good
    • 0

う~ん。

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

 う~ん。

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というものもあるにはあるけど、現時点ではまだまだ現実的とは言い難い。
    • good
    • 0
この回答へのお礼

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


この部分がネット上でなかなか見つからないのです。

お礼日時:2011/12/04 15:35

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報