10

我在 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. 我永远不需要用我的代码编辑电子表格

我确实在网上搜索过,但我能找到的一切都比我试图做的要复杂得多,所以很难理解我在寻找什么。

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

4

2 回答 2

5

I ended up using a tool at shancarter.com/data_converter to convert my flie to a JSON file and linked that to my page. Now I just loop through that JSON object to get what I need. This seemed like the simplest way for my particular needs.

于 2015-01-17T02:01:06.013 回答
4

我使用的是纯文本文件(csv 或 tsv 都可以直接从 Excel 导出)

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

然后让正则表达式根据需要解析出这些值。

所有这些都没有使用任何第三方......如果你愿意,我可以挖掘代码。

示例:您需要将 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>
于 2013-04-23T15:10:19.383 回答