使用JavaScript从Excel电子表格中读取数据的最简单方法是什么?

11

我有一个航空港代码、名称和位置的 Excel 电子表格,就像下面这样:

+-------+----------------------------------------+-------------------+
|  Code |               Airport Name             |      Location     |
+-------+----------------------------------------+-------------------+
|  AUA  |   Queen Beatrix International Airport  |  Oranjestad, Aruba|
+-------+----------------------------------------+-------------------+
我的Javascript接收一个应该是航空公司代码的三个字符字符串。在这种情况下,我需要在电子表格上查找该代码并返回机场名称和位置。
我考虑像这样:
var code = "AUA";

console.log(getAirportInfo(code));

function getAirportInfo(code) {

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

return airportInfo;
}

日志将写出:

阿鲁巴奥兰治斯塔德(AUA): 女王比阿特丽克斯国际机场

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

额外信息:

  1. 电子表格有超过17,000个条目
  2. 上述提到的函数可能会连续被调用8次
  3. 我不必使用Excel电子表格,这只是我现在拥有的
  4. 我永远不需要使用我的代码编辑电子表格

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

感谢您指导我朝着正确的方向前进。


服务器端还是客户端?XLS、XLSX还是CSV? - jantimon
客户端,我可以使用任何使它更容易的格式,或者完全不同的文件类型,如果你的意思是文件本身将保存在服务器上。 - Wesley Smith
1
D3 能够解析 CSV 文件 https://github.com/mbostock/d3/wiki/CSV 然而,我更倾向于使用 JSON 文件。 - jantimon
现在正在阅读D3的文档,谢谢,看起来很有前途,我会告诉你它的表现如何。 - Wesley Smith
@jantimon 我最终使用了http://shancarter.com/data_converter/上的工具将我的文件转换为JSON文件,并从中获取所需内容,回答一下,我会接受它,感谢您的帮助! - Wesley Smith
只需回答自己的问题,我想这可能对其他人有所帮助 :) - jantimon
2个回答

5

最终我使用了shancarter.com/data_converter的工具将我的文件转换为JSON文件,并将其链接到我的页面上。现在,我只需要循环遍历该JSON对象,就可以获取我需要的内容。对于我的特定需求来说,这似乎是最简单的方法。


3
为什么会有人对此进行负投票?我的问题非常清晰,这实际上是我需求中最简单的解决方案。 - Wesley Smith

4
我使用了一个纯文本文件(csv,或者tsv,两者都可以直接从Excel导出)。
通过xmlhttprequest将其加载到一个字符串变量中。通常情况下浏览器缓存会防止每次页面加载时都需要下载该文件。
然后使用正则表达式按需解析值。
所有这些都没有使用任何第三方插件......如果您希望,我可以找到代码。
示例: 你需要在与此页面相同的Web文件夹中拥有data.txt文件,或者更新路径...
 <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>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接