Micha162: CSV Datei in Array lesen

Hi Leute,

ich habe auf meinem Server eine CSV Datei.
Beim Seitenaufruf möchte einzelne Werte aus dieser Datei auslesen und ausgeben.
Ich bin serverseitig sehr beschränkt und kann leider kein PHP verwenden.
Die folgende Funktion habe ich bereits gefunden.
Jetzt meine Frage:
Wie kann ich der Funktion die csv Datei übergeben?

Vielen Dank schon mal ;)
Grüße,
Micha

  
  
function csv2array(data, delimeter) {  
  // Retrieve the delimeter  
  if (delimeter == undefined)  
    delimeter = ',';  
  if (delimeter && delimeter.length > 1)  
    delimeter = ',';  
  
  // initialize variables  
  var newline = '\n';  
  var eof = '';  
  var i = 0;  
  var c = data.charAt(i);  
  var row = 0;  
  var col = 0;  
  var array = new Array();  
  
  while (c != eof) {  
    // skip whitespaces  
    while (c == ' ' || c == '\t' || c == '\r') {  
      c = data.charAt(++i); // read next char  
    }  
  
    // get value  
    var value = "";  
    if (c == '\"') {  
      // value enclosed by double-quotes  
      c = data.charAt(++i);  
  
      do {  
        if (c != '\"') {  
          // read a regular character and go to the next character  
          value += c;  
          c = data.charAt(++i);  
        }  
  
        if (c == '\"') {  
          // check for escaped double-quote  
          var cnext = data.charAt(i+1);  
          if (cnext == '\"') {  
            // this is an escaped double-quote.  
            // Add a double-quote to the value, and move two characters ahead.  
            value += '\"';  
            i += 2;  
            c = data.charAt(i);  
          }  
        }  
      }  
      while (c != eof && c != '\"');  
  
      if (c == eof) {  
        throw "Unexpected end of data, double-quote expected";  
      }  
  
      c = data.charAt(++i);  
    }  
    else {  
      // value without quotes  
      while (c != eof && c != delimeter && c!= newline && c != ' ' && c != '\t' && c != '\r') {  
        value += c;  
        c = data.charAt(++i);  
      }  
    }  
  
    // add the value to the array  
    if (array.length <= row)  
      array.push(new Array());  
    array[row].push(value);  
  
    // skip whitespaces  
    while (c == ' ' || c == '\t' || c == '\r') {  
      c = data.charAt(++i);  
    }  
  
    // go to the next row or column  
    if (c == delimeter) {  
      // to the next column  
      col++;  
    }  
    else if (c == newline) {  
      // to the next row  
      col = 0;  
      row++;  
    }  
    else if (c != eof) {  
      // unexpected character  
      throw "Delimiter expected after character " + i;  
    }  
  
    // go to the next character  
    c = data.charAt(++i);  
  }  
  
  return array;  
}
  1. Lieber Micha162,

    Wie kann ich der Funktion die csv Datei übergeben?

    Du kannst JavaScript ein XMLHttpObjekt erstellen lassen, welches versucht, diese Datei zu laden. Die Eigenschaft "responseText" ist für Dich interessant.

    Liebe Grüße,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. Du kannst JavaScript ein XMLHttpObjekt erstellen lassen, welches versucht, diese Datei zu laden. Die Eigenschaft "responseText" ist für Dich interessant.

      R I C H T I G !

      Ich würde einen Schritt weiter gehen. Wenn denn schon eine Textdatei geladen wird, dann würde ich die Daten im JSON-Format auf dem Webserver bereit stellen, also die CSV-Datei vorher umwandeln. Das dürfte die Clients entlasten.

      Mit PHP gänge das bequem. Das muss dazu ja nicht auf dem Webserver installiert sein. Außerdem kann man dann schon mal mit PHP üben. Irgend wann wird es nämlich notwendig sein auch serverseitig eine Logik bereit zu stellen. Z.B. um auch Daten zu speichern....

      Jörg Reinholz