khenckel: HTML-table exportieren per JS oder Ajax?

Hallo!

Ich wollte eine Tabelle auf einer Internetseite in eine Datei exportieren (cvs).
Da der table dynamisch aufgebaut wird wuerde ich gern einen Knopf daneben machen, der genau das macht, wollte es mir aber eigentlich sparen ein script aufzurufen das die Daten erneut aus der Datenbank holt, oder die Daten unsichtbar ein zweites mal auf der seite speichern.

Gibt es daher ein scipt (javascript, ajax oder aehnliches) mit dem ich das machen kann??
habe bisher bei meiner Suche im Netz leider nix gefunden...

Danke schonmal!

  1. Ich wollte eine Tabelle auf einer Internetseite in eine Datei exportieren (cvs).

    Falsch. Du willst, daß der User diese lokal speichern kann. Das ist die crux bei dienem Plan, denn außer bei IEs hat man keinen Zugriff auf das System des Clients.

    Gibt es daher ein scipt (javascript, ajax oder aehnliches) mit dem ich das machen kann??

    Eine Krücke wäre, mit JS lokal eine neue Seite zugenerieren, in der die Daten csv-like dargestellt sind, das Speichern muß der Nutzer aber immer noch selbst machen. Ansonsten muß der Knopf auf ein Programm auf dem Server verweisne, welches das CSV erstellt und dem Nutzer zum Download anbietet. PHP bspw. bietet hierzu Möglichkeiten, mit temporären Files zu arbeiten.

    JJ

  2. Hallo,

    Da der table dynamisch aufgebaut wird wuerde ich gern einen Knopf daneben machen, der genau das macht, wollte es mir aber eigentlich sparen ein script aufzurufen das die Daten erneut aus der Datenbank holt, oder die Daten unsichtbar ein zweites mal auf der seite speichern.

    Ich denke, es ist am einfachsten, das serverseitig zu erledigen.

    Ich denke mal, es sind nicht sooo viele Daten, außerdem kannst du sie z.B. GZip-komprimiert übertragen.

    Ein JavaScript zu schreiben, das die HTML-Tabelle in ein CSV linearisiert und das dann in ein neues Fenster schreibt (document.open, document.write, document.close), halte ich irgendwie für Overkill. Es geht aber natürlich über das DOM. Du kannst alle tr-Elemente einer Tabelle durchlaufen (tabellenelement.getElementsByTagName("tr") und mit einer for-Schleife die Liste durchlaufen) und darin alle td-Elemente (ebenso mit anderem Parameter) durchlaufen. Und dann jeweils die Textinhalte der Knoten auslesen und in einem String zusammenbasteln (.firstChild.data).

    Mathias