使用javascript从excel电子表格中读取数据的最简单方法?

时间:2013-04-23 14:53:46

标签: javascript excel

我在Excel电子表格中列出了机场代码,名称和位置,如下所示:

+-------+----------------------------------------+-------------------+
|  Code |               Airport Name             |      Location     |
+-------+----------------------------------------+-------------------+
|  AUA  |   Queen Beatrix International Airport  |  Oranjestad, Aruba|
+-------+----------------------------------------+-------------------+

我的Javascript传递了3个字符的字符串,应该是航空公司代码。当发生这种情况时,我需要在电子表格中找到代码并返回机场名称和位置。

我想的是:

var code = "AUA";

console.log(getAirportInfo(code));

function getAirportInfo(code) {

// get information from spreadsheet
//format info (no help needed there)

return airportInfo;
}

日志写出来的地方:

Oranjestad, Aruba (AUA): Queen Beatrix International Airport

从电子表格中获取所需数据的最简单方法是什么?

额外信息:

  1. 电子表格包含超过17,000个条目
  2. 上面提到的功能最多可以连续调用8次
  3. 我不必使用我现在拥有的Excel电子表格
  4. 我永远不需要使用我的代码编辑电子表格
  5. 我确实在网上搜索,但我能找到的所有东西都比我想要的东西复杂得多,因此很难理解我在寻找什么。

    感谢您帮助我指明正确的方向。

2 个答案:

答案 0 :(得分:4)

我使用了纯文本文件(csv或tsv,两者都可以直接从Excel导出)

通过xmlhttprequest将其加载到字符串var中。通常,浏览器缓存将不再需要在每次加载页面时下载文件。

然后让Regex根据需要解析这些值。

所有不使用任何第三方......如果您愿意,我可以挖出代码。

实施例: 您需要将data.txt文件放在与此页面相同的Web文件夹中,或者更新路径...

 <html>
      <head>
        <script>

          var fileName = "data.txt";
          var data = "";

          req = new XMLHttpRequest();
          req.open("GET", fileName, false);

          req.addEventListener("readystatechange", function (e) {
            data = req.responseText ;
          });

          req.send();

          function getInfoByCode(c){
            if( data == "" ){
              return 'DataNotReady' ;
            } else {
              var rx = new RegExp( "^(" + c + ")\\s+\\|\\s+(.+)\\s+\\|\\s+\\s+(.+)\\|", 'm' ) ;

              var values = data.match(rx,'m');
              return { airport:values[2] , city:values[3] };
            }
          }

          function clickButton(){
            var e = document.getElementById("code");
            var ret = getInfoByCode(e.value);

            var res = document.getElementById("res");

            res.innerText = "Airport:" + ret.airport + " in " + ret.city;

          }

        </script>
       </head>
       <body>
        <input id="code" value="AUA">
        <button onclick="clickButton();">Find</button>
        <div id="res">
        </div>

       </body>
    </html>

答案 1 :(得分:2)

我最终使用shancarter.com/data_converter上的工具将我的flie转换为JSON文件并将其链接到我的页面。现在我只是遍历那个JSON对象来获得我需要的东西。这似乎是满足我特殊需求的最简单方式。