Da CSV a Tabella HTML

Converti CSV in una tabella HTML

Prova un esempio

Input CSV

Output HTML

Esegue in locale · Sicuro per incollare segreti
La tabella HTML apparirà qui…
La prima riga è l'intestazione:

Cos'è la conversione da CSV a tabella HTML?

La conversione da CSV a tabella HTML prende valori separati da virgole e li trasforma in markup HTML strutturato che i browser possono visualizzare come tabella. L'output utilizza gli elementi standard definiti nell'HTML Living Standard: table, thead, tbody, tr, th e td. Ogni riga CSV viene mappata a un elemento tr e ogni campo a una cella td o th.

I file CSV memorizzano i dati come testo semplice con righe separate da interruzioni di riga e campi separati da delimitatori (in genere virgole). Sebbene il CSV sia ottimo per l'archiviazione e il trasferimento di dati tra applicazioni come Excel, Google Sheets e database, non ha un livello di presentazione. Le tabelle HTML aggiungono quel livello racchiudendo i dati in markup semantico che supporta la formattazione con CSS, l'ordinamento con JavaScript e l'accessibilità tramite attributi come scope e aria-label.

La conversione deve gestire diversi casi limite definiti nell'RFC 4180: campi racchiusi tra virgolette contenenti virgole o interruzioni di riga, virgolette doppie escapate all'interno dei campi e delimitatori variabili (punto e virgola, tab, pipe). Un convertitore corretto esegue anche l'escaping delle entità HTML nel contenuto delle celle, sostituendo <, >, & e le virgolette con i corrispondenti caratteri di entità, per evitare markup non valido o vulnerabilità XSS.

Perché usare un convertitore da CSV a tabella HTML?

Costruire tabelle HTML a mano è tedioso e soggetto a errori, soprattutto per dataset con decine di colonne o centinaia di righe. Questo convertitore gestisce il parsing, l'escaping e la formattazione in un unico passaggio.

Generazione immediata della tabella
Incolla il CSV e ottieni una tabella HTML completa con la struttura corretta di thead e tbody. Nessuna scrittura manuale di tag, nessun conteggio delle celle per riga.
🔒
Elaborazione privacy-first
Tutta la conversione avviene nel browser tramite JavaScript. I tuoi dati CSV non vengono mai inviati a un server, né registrati né memorizzati.
🎯
Output pulito e valido
L'HTML generato segue l'HTML Living Standard con annidamento corretto: table > thead/tbody > tr > th/td. I caratteri speciali vengono escapati come entità per evitare problemi di rendering.
📋
Formati di input flessibili
Rileva automaticamente virgole, punto e virgola, tab e pipe come delimitatori. Gestisce le regole di quotatura RFC 4180, incluse le virgolette doppie escapate e i campi multiriga.

Casi d'uso del convertitore da CSV a tabella HTML

Sviluppo frontend
Genera una tabella HTML da dati di esempio per prototipare un componente UI. Copia l'output direttamente in un template React, Vue o Angular e applica le classi CSS.
Creazione di template email
I client email (Outlook, Gmail) visualizzano le tabelle HTML in modo affidabile ma rifiutano la maggior parte dei metodi di layout CSS. Converti un elenco contatti o un report CSV in una tabella da incorporare in una email HTML.
Contenuto per siti statici
Inserisci una tabella HTML generata in una pagina Jekyll, Hugo o Astro quando i tuoi dati provengono dall'export di un foglio di calcolo. Nessun plugin di build necessario.
Visualizzazione di dati di test QA
Converti una matrice di test CSV in una tabella HTML da includere in un report di test o in una pagina Confluence. I revisori possono esaminare i risultati senza aprire un'applicazione per fogli di calcolo.
Data journalism
Trasforma un dataset CSV in una tabella HTML che può essere formattata e incorporata in un articolo CMS. Aggiungi CSS per la striatura, l'ordinamento o il wrapping responsivo dopo la conversione.
Didattica e documentazione
Crea esempi di tabelle HTML da dati CSV reali per tutorial, documentazione API o materiali didattici. Gli studenti vedono sia il formato sorgente sia l'output renderizzato.

Riferimento agli elementi della tabella HTML

Una tabella HTML ben strutturata utilizza elementi semantici che separano intestazioni, corpo e piè di pagina. Gli screen reader e i motori di ricerca usano questi elementi per comprendere la struttura della tabella. Raggruppare le righe con thead, tbody e tfoot consente ai browser di applicare lo scrolling indipendente e di ripetere le righe di intestazione nei layout di stampa.

ElementoRuoloNote
<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 tabella HTML

Il CSV è un formato di trasporto ottimizzato per la semplicità, mentre l'HTML è un formato di presentazione ottimizzato per il rendering, l'accessibilità e l'interattività nei browser.

CSV
Formato testo semplice. Nessun tipo di dato: ogni valore è una stringa. Nessuna formattazione, nessun annidamento, nessun metadato. Le righe sono delimitate da interruzioni di riga, i campi sono separati da delimitatori. La dimensione del file è minima. Supportato universalmente da fogli di calcolo, database e strumenti ETL. Definito dall'RFC 4180.
HTML Table
Formato markup con struttura semantica. Distingue le intestazioni (th) dai dati (td). Supporta attributi come colspan, rowspan, scope e class per la formattazione e l'accessibilità. Viene analizzato dai browser nel DOM per l'interazione con CSS e JavaScript. Può essere ordinato, filtrato o paginato con librerie come DataTables senza alcuna elaborazione lato server.

Esempi di codice

Ecco come convertire CSV in tabelle HTML in modo programmatico in diversi linguaggi. Ogni esempio gestisce la riga di intestazione separatamente ed esegue l'escaping delle entità HTML nel contenuto delle celle. Questi snippet sono pronti per essere inseriti in uno script, una pipeline di build o un endpoint API backend che genera report HTML da esportazioni di dati.

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

Domande frequenti

Come si converte un CSV in una tabella HTML?
Incolla il CSV nel pannello di input. Il convertitore analizza ogni riga, mappa la prima riga agli elementi th dentro thead e racchiude le righe rimanenti in elementi td dentro tbody. L'output è una tabella HTML completa, pronta per essere copiata.
L'HTML generato è accessibile?
L'output usa elementi thead e th, che forniscono agli screen reader informazioni strutturali sulla tabella. Per la piena conformità WCAG 2.1, dovresti aggiungere attributi scope alle celle di intestazione e un elemento caption che descriva il contenuto della tabella.
Cosa succede ai caratteri speciali come < e & nel mio CSV?
Il convertitore effettua l'escaping di tutti i caratteri sensibili all'HTML: < diventa &lt;, > diventa &gt;, & diventa &amp; e le virgolette doppie diventano &quot;. Questo previene markup non valido e protegge da XSS se incorpori la tabella in una pagina web.
Posso convertire un file separato da punto e virgola o da tab?
Sì. Il tool rileva automaticamente il delimitatore analizzando la prima riga dell'input. Supporta virgole, punto e virgola, tab e pipe. Non è necessario pre-convertire il file in formato separato da virgole.
Qual è la differenza tra CSV a HTML e CSV a tabelle Markdown?
CSV a HTML produce markup renderizzabile dal browser con elementi semantici (thead, tbody, th, td) e supporta la formattazione tramite classi CSS. CSV a Markdown produce tabelle in testo semplice delimitate da pipe, usate nei README di GitHub e nella documentazione. Usa HTML quando hai bisogno di controllo sulla formattazione o compatibilità email; usa Markdown per documentazione e repository.
Il convertitore gestisce i file CSV con campi racchiusi tra virgolette?
Sì. Il parser segue le regole RFC 4180: i campi racchiusi tra virgolette doppie possono contenere virgole, interruzioni di riga e virgolette doppie letterali (escapate come due virgolette doppie consecutive). Le virgolette vengono rimosse dall'output e il contenuto del campo viene inserito nella cella HTML.
Posso formattare la tabella HTML generata con CSS?
L'output è HTML semplice senza stili inline o classi, quindi puoi applicare qualsiasi CSS desideri. Aggiungi una classe all'elemento table, poi usa selettori come table th per le intestazioni, table td per le celle e table tr:nth-child(even) per la striatura zebra. Framework come Bootstrap e Tailwind hanno classi utility per le tabelle già integrate.