【问题标题】:easiest way to read data from excel spreadsheet with javascript?使用javascript从excel电子表格中读取数据的最简单方法?
【发布时间】:2013-04-23 14:53:46
【问题描述】:

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

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

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

【问题讨论】:

  • 服务器端还是客户端? XLS、XLSX 还是 CSV?
  • 客户端,我可以使用任何更容易的格式,或者完全不同类型的文件,如果你的意思是,文件本身将保存在服务器上
  • D3 能够解析 CSV 文件 github.com/mbostock/d3/wiki/CSV 但是我更喜欢使用 JSON 文件。
  • 现在阅读 D3 的文档,谢谢,看起来很有希望让你知道它是如何工作的
  • @jantimon 我最终在shancarter.com/data_converter 使用了一个工具将我的苍蝇转换为 JSON 文件,并且可以从那里得到我需要的东西,抛出一个答案并不能接受它,谢谢你的帮助!

标签: javascript excel


【解决方案1】:

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

【讨论】:

  • 为什么会有人对此投反对票?我的问题非常清楚,这实际上是满足我需求的最简单的解决方案
【解决方案2】:

我使用的是纯文本文件(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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-29
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多