CSV to HTML Table

Převést CSV na HTML tabulku

Zkusit příklad

Vstup CSV

Výstup HTML

Běží lokálně · Bezpečné pro vkládání tajných údajů
HTML tabulka se zobrazí zde…
První řádek je záhlaví:

Co je převod CSV na HTML tabulku?

Převod CSV na HTML tabulku vezme hodnoty oddělené čárkami a transformuje je do strukturovaného HTML kódu, který prohlížeče dokáží vykreslit jako vizuální tabulku. Výstup využívá standardní elementy HTML tabulky definované v HTML Living Standard: table, thead, tbody, tr, th a td. Každý řádek CSV je namapován na element tr a každé pole na buňku td nebo th.

Soubory CSV ukládají data jako prostý text, přičemž řádky jsou odděleny novými řádky a pole jsou oddělena oddělovači (typicky čárkami). Zatímco CSV funguje dobře pro ukládání a přenos dat mezi aplikacemi jako Excel, Google Sheets a databázemi, nemá žádnou prezentační vrstvu. HTML tabulky tuto vrstvu přidávají tím, že obalují data do sémantického kódu, který podporuje stylování pomocí CSS, řazení pomocí JavaScript a přístupnost prostřednictvím atributů jako scope a aria-label.

Převod musí zpracovat několik okrajových případů definovaných v RFC 4180: pole v uvozovkách obsahující čárky nebo nové řádky, escapované uvozovky uvnitř polí a různé oddělovače (středníky, tabulátory, svislítka). Správný převodník také escapuje HTML entity v obsahu buněk, přičemž nahrazuje <, >, & a uvozovky jejich entitními ekvivalenty, aby zabránil poškození kódu nebo zranitelnostem XSS.

Proč používat převodník CSV na HTML tabulku?

Ruční psaní HTML tabulek je zdlouhavé a náchylné k chybám, zejména u datových sad s desítkami sloupců nebo stovkami řádků. Tento převodník zvládne parsování, escapování i formátování v jednom kroku.

Okamžité generování tabulky
Vložte CSV a získejte kompletní HTML tabulku se správnou strukturou thead a tbody. Bez ručního psaní tagů, bez počítání buněk v každém řádku.
🔒
Zpracování s důrazem na soukromí
Veškerý převod probíhá ve vašem prohlížeči pomocí JavaScript. Vaše CSV data nejsou nikdy odeslána na server, zaznamenána ani uložena.
🎯
Čistý a validní výstup
Vygenerovaný HTML dodržuje HTML Living Standard se správným vnořením: table > thead/tbody > tr > th/td. Speciální znaky jsou escapovány jako entity, aby se předešlo problémům s vykreslováním.
📋
Flexibilní vstupní formáty
Automaticky rozpoznává čárky, středníky, tabulátory a svislítka jako oddělovače. Zpracovává pravidla uvozování dle RFC 4180 včetně escapovaných uvozovek a víceřádkových polí.

Případy použití převodníku CSV na HTML tabulku

Frontend vývoj
Vygenerujte HTML tabulku z ukázkových dat pro prototypování UI komponenty. Zkopírujte výstup přímo do šablony React, Vue nebo Angular a aplikujte CSS třídy.
Tvorba e-mailových šablon
E-mailoví klienti (Outlook, Gmail) spolehlivě vykreslují HTML tabulky, ale odmítají většinu CSS rozvržení. Převeďte CSV seznam kontaktů nebo report na tabulku, kterou lze vložit do HTML e-mailu.
Obsah statických stránek
Vložte vygenerovanou HTML tabulku do stránky Jekyll, Hugo nebo Astro, když vaše data pocházejí z exportu tabulkového procesoru. Není potřeba žádný plugin pro build.
Zobrazení testovacích dat pro QA
Převeďte CSV testovací matici na HTML tabulku pro zařazení do testovacího reportu nebo stránky Confluence. Kontroloři mohou procházet výsledky bez otevírání tabulkového procesoru.
Datová žurnalistika
Přeměňte CSV datovou sadu na HTML tabulku, kterou lze stylovat a vložit do článku v CMS. Po převodu přidejte CSS pro pruhování, řazení nebo responzivní zalamování.
Výuka a dokumentace
Vytvořte příklady HTML tabulek z reálných CSV dat pro tutoriály, API dokumentaci nebo studijní materiály. Studenti vidí jak zdrojový formát, tak vykreslený výstup.

Přehled elementů HTML tabulky

Dobře strukturovaná HTML tabulka využívá sémantické elementy, které oddělují záhlaví, tělo a zápatí. Čtečky obrazovky a vyhledávače tyto elementy používají k pochopení struktury tabulky. Seskupení řádků pomocí thead, tbody a tfoot umožňuje prohlížečům aplikovat nezávislé posouvání a opakovat řádky záhlaví v tiskových rozvrženích.

ElementRolePoznámky
<table>Table rootWraps the entire table structure
<thead>Header groupContains header rows; browsers repeat on print page breaks
<tbody>Body groupContains data rows; enables independent scrolling with CSS
<tfoot>Footer groupSummary or totals row; renders after tbody
<tr>Table rowGroups cells horizontally
<th>Header cellBold and centered by default; supports scope attribute for accessibility
<td>Data cellStandard content cell; accepts any inline or block HTML
<caption>Table captionVisible title above the table; read by screen readers first
<colgroup>Column groupApplies width or style to entire columns without per-cell classes

CSV vs HTML tabulka

CSV je transportní formát optimalizovaný pro jednoduchost, zatímco HTML je prezentační formát optimalizovaný pro vykreslování, přístupnost a interaktivitu v prohlížečích.

CSV
Formát prostého textu. Bez datových typů: každá hodnota je řetězec. Bez stylování, vnořování ani metadat. Řádky jsou odděleny novými řádky, pole oddělovači. Velikost souboru je minimální. Univerzálně podporován tabulkovými procesory, databázemi a ETL nástroji. Definován v RFC 4180.
HTML Table
Formát s kódem a sémantickou strukturou. Rozlišuje záhlaví (th) od dat (td). Podporuje atributy jako colspan, rowspan, scope a class pro stylování a přístupnost. Prohlížeče jej parsují do DOM pro interakci přes CSS a JavaScript. Lze řadit, filtrovat nebo stránkovat pomocí knihoven jako DataTables bez jakéhokoli zpracování na straně serveru.

Ukázky kódu

Zde je postup pro programatický převod CSV na HTML tabulky v různých jazycích. Každý příklad zpracovává řádek záhlaví zvlášť a escapuje HTML entity v obsahu buněk. Tyto úryvky jsou připraveny k použití ve skriptu, build pipeline nebo backendovém API endpointu, který generuje HTML reporty z datových exportů.

JavaScript (browser / Node.js)
// CSV string → HTML table with thead/tbody
const csv = `name,age,city
Alice,30,Berlin
Bob,25,Tokyo`

function csvToHtmlTable(csv) {
  const rows = csv.trim().split('\n').map(r => r.split(','))
  const [headers, ...data] = rows
  const ths = headers.map(h => `<th>${h}</th>`).join('')
  const trs = data.map(row =>
    '    <tr>' + row.map(c => `<td>${c}</td>`).join('') + '</tr>'
  ).join('\n')
  return `<table>
  <thead><tr>${ths}</tr></thead>
  <tbody>
${trs}
  </tbody>
</table>`
}

console.log(csvToHtmlTable(csv))
// → <table><thead><tr><th>name</th>...</tr></thead><tbody>...</tbody></table>
Python
import csv, io, html

csv_string = """name,age,city
Alice,30,Berlin
Bob,25,Tokyo"""

reader = csv.reader(io.StringIO(csv_string))
headers = next(reader)

lines = ['<table>', '  <thead>', '    <tr>']
for h in headers:
    lines.append(f'      <th>{html.escape(h)}</th>')
lines += ['    </tr>', '  </thead>', '  <tbody>']

for row in reader:
    lines.append('    <tr>')
    for cell in row:
        lines.append(f'      <td>{html.escape(cell)}</td>')
    lines.append('    </tr>')

lines += ['  </tbody>', '</table>']
print('\n'.join(lines))
# → well-formed HTML table with escaped special characters
PHP
<?php
$csv = "name,age,city\nAlice,30,Berlin\nBob,25,Tokyo";
$rows = array_map('str_getcsv', explode("\n", trim($csv)));
$headers = array_shift($rows);

echo "<table>\n  <thead>\n    <tr>\n";
foreach ($headers as $h) {
    echo "      <th>" . htmlspecialchars($h) . "</th>\n";
}
echo "    </tr>\n  </thead>\n  <tbody>\n";

foreach ($rows as $row) {
    echo "    <tr>\n";
    foreach ($row as $cell) {
        echo "      <td>" . htmlspecialchars($cell) . "</td>\n";
    }
    echo "    </tr>\n";
}
echo "  </tbody>\n</table>";
// → <table><thead>...<th>name</th>...</thead><tbody>...</tbody></table>
CLI (awk / csvtool)
# Using awk — quick one-liner for simple CSV (no quoted fields)
awk -F, 'NR==1{print "<table><thead><tr>";for(i=1;i<=NF;i++)print "<th>"$i"</th>";print "</tr></thead><tbody>"}
NR>1{print "<tr>";for(i=1;i<=NF;i++)print "<td>"$i"</td>";print "</tr>"}
END{print "</tbody></table>"}' data.csv

# Using Python one-liner for RFC 4180-compliant parsing
python3 -c "
import csv, sys, html
r=csv.reader(sys.stdin); h=next(r)
print('<table><thead><tr>')
print(''.join(f'<th>{html.escape(c)}</th>' for c in h))
print('</tr></thead><tbody>')
for row in r:
    print('<tr>'+''.join(f'<td>{html.escape(c)}</td>' for c in row)+'</tr>')
print('</tbody></table>')
" < data.csv

Časté dotazy

Jak převést CSV na HTML tabulku?
Vložte své CSV do vstupního panelu. Převodník zparsuje každý řádek, namapuje první řádek na elementy th uvnitř thead a zabalí zbývající řádky do elementů td uvnitř tbody. Výstupem je kompletní HTML tabulka připravená ke zkopírování.
Je vygenerovaný HTML přístupný?
Výstup používá elementy thead a th, které poskytují čtečkám obrazovky strukturální informace o tabulce. Pro plnou shodu s WCAG 2.1 byste měli přidat atributy scope do buněk záhlaví a element caption popisující obsah tabulky.
Co se stane se speciálními znaky jako < a & v mém CSV?
Převodník escapuje všechny HTML citlivé znaky: < se stane &lt;, > se stane &gt;, & se stane &amp; a uvozovky se stanou &quot;. To zabraňuje poškození kódu a chrání před XSS, pokud tabulku vložíte na webovou stránku.
Lze převést soubor oddělený středníky nebo tabulátory?
Ano. Nástroj automaticky rozpozná oddělovač analýzou prvního řádku vstupu. Podporuje čárky, středníky, tabulátory a svislítka. Není třeba soubor předem převádět do formátu s čárkami.
Jaký je rozdíl mezi převodem CSV na HTML a CSV na Markdown tabulky?
CSV na HTML vytváří kód vykreslitelný prohlížečem se sémantickými elementy (thead, tbody, th, td) a podporuje stylování pomocí CSS tříd. CSV na Markdown vytváří tabulky oddělené svislítky jako prostý text používaný v GitHub README a dokumentaci. Použijte HTML, když potřebujete kontrolu nad stylem nebo kompatibilitu s e-mailem; použijte Markdown pro dokumentaci a repozitáře.
Zpracovává převodník CSV soubory s poli v uvozovkách?
Ano. Parser se řídí pravidly RFC 4180: pole uzavřená v uvozovkách mohou obsahovat čárky, nové řádky a literální uvozovky (escapované jako dvě po sobě jdoucí uvozovky). Uvozovky jsou z výstupu odstraněny a obsah pole je umístěn do HTML buňky.
Lze vygenerovanou HTML tabulku stylovat pomocí CSS?
Výstup je prostý HTML bez inline stylů nebo tříd, takže můžete aplikovat libovolné CSS. Přidejte třídu k elementu table, pak použijte selektory jako table th pro záhlaví, table td pro buňky a table tr:nth-child(even) pro pruhované řádky. Frameworky jako Bootstrap a Tailwind mají vestavěné třídy pro tabulky.