2013-04-23 12 views
9

Ich habe eine Liste von Flughafencodes, Namen und Orten in einer Excel-Tabelle wie die folgenden Liste:einfachste Möglichkeit, Daten aus Excel Tabellenkalkulation mit Javascript zu lesen?

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

Mein Javascript übergeben wird eine 3-Zeichenfolge, die ein Airline-Code sein sollten. Wenn das passiert, muss ich den Code in der Tabelle finden und den Namen und den Standort des Flughafens zurückgeben.

Im Denken so etwas wie:

var code = "AUA"; 

console.log(getAirportInfo(code)); 

function getAirportInfo(code) { 

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

return airportInfo; 
} 

Wo das Protokoll würde schreiben:

Oranjestad, Aruba (AUA): Queen Beatrix International Airport

Was ist die einfachste Methode, um die Daten, die ich aus der Tabelle müssen zu bekommen?

Extra Info:

  1. Die Tabelle verfügt über mehr als 17.000 Einträge
  2. Die Funktion oben erwähnt kann bis zu 8-mal in Folge
  3. Ich muss ein nicht verwenden genannt werden Excel-Tabelle das ist genau das, was ich habe jetzt
  4. ich werde nie die Tabelle mit meinem Code
  5. bearbeiten müssen

Ich habe im Internet gesucht, aber alles, was ich finden konnte, war viel komplizierter als das, was ich versuche, so dass es schwer war zu verstehen, wonach ich suche.

Vielen Dank für jede Hilfe, die mich in die richtige Richtung weist.

+0

Serverseite oder Clientseite? XLS, XLSX oder CSV? – jantimon

+0

Client-Seite, und ich kann verwenden, welches Format es einfacher macht, oder eine andere Art von Datei insgesamt, wird die Datei selbst auf dem Server gehalten, wenn das ist, was Sie meinen – DelightedD0D

+1

D3 CSV-Dateien analysieren kann https: // github .com/mobostock/d3/wiki/CSV Allerdings würde ich eine JSON-Datei bevorzugen. – jantimon

Antwort

2

Ich landete mit einem Werkzeug an shancarter.com/data_converter, um meinen flie in eine JSON-Datei zu konvertieren und diese mit meiner Seite zu verknüpfen. Jetzt durchlaufe ich einfach das JSON-Objekt, um zu bekommen, was ich brauche. Dies schien der einfachste Weg für meine besonderen Bedürfnisse.

+3

Warum um alles in der Welt würde jemand dies ablehnen? Meine Frage war extrem klar und das war in der Tat die einfachste Lösung für meine Bedürfnisse – DelightedD0D

+0

http://shankarter.github.io/mr-data-converter/ –

4

Ich habe eine einfache Textdatei verwendet (csv oder tsv beide direkt aus Excel exportiert werden können)

Loaded, dass in einen String var über xmlhttprequest. Normalerweise muss der Browser-Cache die Datei nicht mehr bei jedem Laden der Seite herunterladen.

Dann haben Sie eine Regex parse die Werte wie benötigt.

Alles ohne einen Dritten zu verwenden .... Ich kann den Code ausgraben, wenn Sie es wünschen.

Beispiel: Sie müssen die data.txt Datei im selben Web-Ordner wie dieser Seite haben, oder die Pfade aktualisieren ...

<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> 
+0

Das klingt richtig meine Gasse, ich liebe es zu sehen, was du meinst. – DelightedD0D

Verwandte Themen