Zur Suche springen Zur Navigation springen Zum Hauptinhalt springen Zum Footer springen

Wenn man auf seiner Website umfangreiche tabellarische Daten abbildet, kann es sich anbieten diese zur Weiterverarbeitung als Download im CSV-Format bereitzustellen. In diesem Beitrag archivieren wir ein jQuery-Snippet für diesen Anwendungsfall. Sofern die Daten auf der Website als semantisch korrekte HTML <table> vorliegen, kann der Inhalt der Tabelle per Klick als CSV heruntergeladen werden.

Schulungen von kulturbanause

Intensive Trainings mit hohem Praxisbezug.

HTML-Tabelle

Basis des Exports ist eine saubere HTML-Tabelle. Die Grundlage unseres Beispiels sieht daher wie folgt aus:

<table>
  <tr>
    <th>Feature 1</th>
    <th>Feature 2</th>
    <th>Feature 3</th>
  </tr>
  <tr>
    <td>Wert 1</td>
    <td>Wert 1</td>
    <td>Wert 1</td>
  </tr>
  <tr>
    <td>Wert 2</td>
    <td>Wert 2</td>
    <td>Wert 2</td>
  </tr>
  <tr>
    <td>Wert 3</td>
    <td>Wert 3</td>
    <td>Wert 3</td>
  </tr>
</table>

Unter der Tabelle binden wir einen Button ein, der die ID #export erhalten hat. Per Klick auf diesen Button wir die CSV-Datei erstellt und der Download gestartet.

<button id="export" class="btn" data-export="export">Export</button>

Script zur Erstellung der CSV-Datei

Um die Umwandlung der HTML-Tabelle in CSV, sowie den eigentlichen Export zu ermöglichen könnt ihr das folgende JavaScript (jQuery) verwenden.

$.prototype.kb_table_csv = function() {

var kb_tidy_content = function(text){
  text = text.replace(/"/g, '""');
  return '"'+text+'"';
};

$(this).each(function(){
  var table = $(this);
  var caption = $(this).find('caption').text();
  var title = [];
  var rows = [];

  $(this).find('tr').each(function(){
   var data = [];
   $(this).find('th').each(function(){
   var text = kb_tidy_content($(this).text());
   title.push(text);
  });
 
  $(this).find('td').each(function(){
   var text = kb_tidy_content($(this).text());
   data.push(text);
  });
 
  data = data.join(",");
  rows.push(data);
 });

 title = title.join(",");
 rows = rows.join("\n");

 var csv = title + rows;
 var uri = 'data:text/csv;charset=utf-8,' + encodeURIComponent(csv);
 var download_link = document.createElement('a');
 download_link.href = uri;
 var ts = new Date().getTime();
 if(caption==""){
 download_link.download = ts+".csv";
 } else {
 download_link.download = caption+"-"+ts+".csv";
 }
 document.body.appendChild(download_link);
 download_link.click();
 document.body.removeChild(download_link);
 });
};

CSV-Export ausführen

Folgender jQuery-Code startet dann den Export. Per Klick auf ein Element mit der ID #export wird die Tabelle ins CSV umgewandelt und exportiert.

$("#export").click(function(){
  $("table").kb_table_csv();
});

Beispiel anschauen

Links / Quellen:

Geschrieben von Jonas

thumb

Jonas ist Gründer der Webdesign Agentur kulturbanause® und des kulturbanause® Blogs. Er übernimmt Projektleitung, Grafik sowie Frontend- und WordPress-Development und hat zahlreiche Fachbücher und Video-Trainings veröffentlicht. Als Dozent leitet er Schulungen und Workshops. Am liebsten beschäftigt er sich mit Projekten und Themen, die ihn gleichermaßen konzeptionell als auch gestalterisch und technisch fordern.

Seminare mit Jonas Hellwig anzeigenJonas Hellwig bei Xing

Feedback & Ergänzungen – 1 Kommentar

  1. Senior Alfonso
    schrieb am 02.10.2020 um 12:01 Uhr:

    Kann man auch mehrer Tabellen auf einer Seite haben und das ganze mit IDs so machen, dass man dann immer die jeweilige Tabelle runterladen kann? So lädt er immer die „letzte“ Tabelle herunter.

    Antworten

Schreibe einen Kommentar zu Senior Alfonso Antworten abbrechen

Wir freuen uns über Anregungen, Ergänzungen oder Hinweise zu Fehlern. Wir lesen jeden Eintrag, veröffentlichen aber nur, was den Inhalt sinnvoll ergänzt.

Website-Projekte mit kulturbanause

Wir wissen wovon wir reden. Wir realisieren komplette Projekte oder unterstützen punktuell in den Bereichen Design, Development, Strategy und Content.

Übersicht Kompetenzen →

Schulungen von kulturbanause

Wir bieten Seminare und Workshops zu den Themen Konzept, Design und Development. Immer up-to-date, praxisnah, kurzweilig und mit dem notwendigen Blick über den Tellerrand.

Übersicht Schulungsthemen →