kulturbanause Blog

Responsive Design, WordPress, Konzeption, HTML, CSS, JS & UX/UI …

HTML-Tabelle mit JavaScript (jQuery) als CSV exportieren

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.

Workshops und Seminare von kulturbanause

Visual Prototyping, Responsive Design, CSS Grid & Flexbox, Sketch, Adobe XD …

Jetzt Frühbucher-Rabatte sichern!

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:

Jetzt bist du gefragt!

Hast du Anregungen, Ergänzungen, einen Fehler gefunden oder ist dieser Beitrag nicht mehr aktuell? Dann freuen wir uns auf deinen Kommentar.

Du kannst diesen Beitrag natürlich auch weiterempfehlen. Wir sind dir für jede Unterstützung dankbar!

Das könnte dich auch interessieren

Kommentar verfassen

Dieser Blog lebt vom Feedback der Besucher! Also los, mach mit!
Bitte habe Verständnis dafür, dass Kommentare die mit dem Inhalt dieses Beitrags nichts zu tun haben, gelöscht werden.