CSV to HTML Table

Konversi CSV ke tabel HTML

Coba contoh

Input CSV

Output HTML

Berjalan lokal · Aman untuk menempel rahasia
Tabel HTML akan muncul di sini…
Baris pertama adalah header:

Apa itu Konversi CSV ke Tabel HTML?

Konversi CSV ke tabel HTML mengambil nilai yang dipisahkan koma dan mengubahnya menjadi markup HTML terstruktur yang dapat dirender oleh browser sebagai tabel visual. Output menggunakan elemen tabel HTML standar yang didefinisikan dalam HTML Living Standard: table, thead, tbody, tr, th, dan td. Proses ini memetakan setiap baris CSV ke elemen tr dan setiap field ke sel td atau th.

File CSV menyimpan data sebagai teks biasa dengan baris yang dipisahkan oleh newline dan field yang dipisahkan oleh delimiter (biasanya koma). Meskipun CSV cocok untuk penyimpanan data dan transfer antar aplikasi seperti Excel, Google Sheets, dan basis data, format ini tidak memiliki lapisan presentasi. Tabel HTML menambahkan lapisan tersebut dengan membungkus data dalam markup semantik yang mendukung penggayaan dengan CSS, pengurutan dengan JavaScript, dan aksesibilitas melalui atribut seperti scope dan aria-label.

Konversi harus menangani beberapa kasus tepi yang didefinisikan dalam RFC 4180: field yang dikutip yang mengandung koma atau newline, tanda kutip ganda yang di-escape di dalam field, dan delimiter yang bervariasi (titik koma, tab, pipe). Konverter yang benar juga meng-escape entity HTML di konten sel, mengganti karakter <, >, &, dan tanda kutip dengan padanan entity-nya untuk mencegah markup yang rusak atau celah keamanan XSS.

Mengapa Menggunakan Konverter CSV ke Tabel HTML?

Membuat tabel HTML secara manual itu melelahkan dan rawan kesalahan, terutama untuk dataset dengan puluhan kolom atau ratusan baris. Konverter ini menangani parsing, escaping, dan pemformatan dalam satu langkah.

Pembuatan tabel seketika
Tempel CSV dan dapatkan tabel HTML lengkap dengan struktur thead dan tbody yang benar. Tidak perlu menulis tag secara manual atau menghitung sel per baris.
🔒
Pemrosesan yang mengutamakan privasi
Semua konversi berjalan di browser Anda menggunakan JavaScript. Data CSV Anda tidak pernah dikirim ke server, tidak pernah dicatat, dan tidak pernah disimpan.
🎯
Output bersih dan valid
HTML yang dihasilkan mengikuti HTML Living Standard dengan nesting yang benar: table > thead/tbody > tr > th/td. Karakter khusus di-escape sebagai entity untuk mencegah masalah rendering.
📋
Format input yang fleksibel
Mendeteksi otomatis koma, titik koma, tab, dan pipe sebagai delimiter. Menangani aturan pengutipan RFC 4180 termasuk tanda kutip ganda yang di-escape dan field multiline.

Kasus Penggunaan CSV ke Tabel HTML

Pengembangan frontend
Buat tabel HTML dari data sampel untuk membuat prototipe komponen UI. Salin output langsung ke template React, Vue, atau Angular dan terapkan kelas CSS.
Pembuatan template email
Klien email (Outlook, Gmail) merender tabel HTML dengan andal tetapi menolak sebagian besar metode tata letak CSS. Konversi daftar kontak atau laporan CSV menjadi tabel yang dapat Anda sisipkan dalam email HTML.
Konten situs statis
Sisipkan tabel HTML yang dihasilkan ke halaman Jekyll, Hugo, atau Astro ketika data berasal dari ekspor spreadsheet. Tidak perlu plugin build-time.
Tampilan data pengujian QA
Konversi matriks pengujian CSV menjadi tabel HTML untuk disertakan dalam laporan pengujian atau halaman Confluence. Peninjau dapat memindai hasil tanpa membuka aplikasi spreadsheet.
Jurnalisme data
Ubah dataset CSV menjadi tabel HTML yang dapat digaya dan disematkan dalam artikel CMS. Tambahkan CSS untuk striping, pengurutan, atau pembungkusan responsif setelah konversi.
Pengajaran dan dokumentasi
Buat contoh tabel HTML dari data CSV nyata untuk tutorial, dokumentasi API, atau materi kursus. Siswa dapat melihat format sumber sekaligus output yang dirender.

Referensi Elemen Tabel HTML

Tabel HTML yang terstruktur dengan baik menggunakan elemen semantik yang memisahkan header, isi, dan footer. Screen reader dan mesin pencari menggunakan elemen-elemen ini untuk memahami struktur tabel. Mengelompokkan baris dengan thead, tbody, dan tfoot memungkinkan browser menerapkan scroll independen dan mengulang baris header dalam tata letak cetak.

ElemenPeranCatatan
<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 Tabel HTML

CSV adalah format transport yang dioptimalkan untuk kesederhanaan, sedangkan HTML adalah format presentasi yang dioptimalkan untuk rendering, aksesibilitas, dan interaktivitas di browser.

CSV
Format teks biasa. Tidak ada tipe data: setiap nilai adalah string. Tidak ada penggayaan, nesting, atau metadata. Baris dipisahkan newline, field dipisahkan delimiter. Ukuran file minimal. Didukung secara universal oleh spreadsheet, basis data, dan alat ETL. Didefinisikan oleh RFC 4180.
HTML Table
Format markup dengan struktur semantik. Membedakan header (th) dari data (td). Mendukung atribut seperti colspan, rowspan, scope, dan class untuk penggayaan dan aksesibilitas. Diparse oleh browser ke dalam DOM untuk interaksi CSS dan JavaScript. Dapat diurutkan, difilter, atau dipaginasi dengan library seperti DataTables tanpa pemrosesan sisi server.

Contoh Kode

Berikut cara mengonversi CSV ke tabel HTML secara programatik dalam berbagai bahasa pemrograman. Setiap contoh menangani baris header secara terpisah dan meng-escape entity HTML di konten sel. Cuplikan kode ini siap disisipkan ke dalam skrip, pipeline build, atau endpoint API backend yang menghasilkan laporan HTML dari ekspor data.

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

Pertanyaan yang Sering Diajukan

Bagaimana cara mengonversi CSV ke tabel HTML?
Tempel CSV Anda ke panel input. Konverter mengurai setiap baris, memetakan baris pertama ke elemen th di dalam thead, dan membungkus baris selanjutnya dalam elemen td di dalam tbody. Hasilnya adalah tabel HTML lengkap yang siap disalin.
Apakah HTML yang dihasilkan aksesibel?
Output menggunakan elemen thead dan th, yang memberikan informasi struktural kepada screen reader tentang tabel. Untuk kepatuhan penuh WCAG 2.1, Anda perlu menambahkan atribut scope ke sel header dan elemen caption yang mendeskripsikan konten tabel.
Apa yang terjadi pada karakter khusus seperti < dan & di CSV saya?
Konverter meng-escape semua karakter yang sensitif terhadap HTML: < menjadi &lt;, > menjadi &gt;, & menjadi &amp;, dan tanda kutip ganda menjadi &quot;. Ini mencegah markup yang rusak dan melindungi dari XSS jika Anda menyematkan tabel di halaman web.
Bisakah saya mengonversi file yang dipisahkan titik koma atau tab?
Ya. Alat ini mendeteksi otomatis delimiter dengan menganalisis baris pertama input Anda. Alat ini mendukung koma, titik koma, tab, dan pipe. Anda tidak perlu mengonversi file Anda ke format yang dipisahkan koma terlebih dahulu.
Apa perbedaan antara tabel CSV ke HTML dan CSV ke Markdown?
CSV ke HTML menghasilkan markup yang dapat dirender browser dengan elemen semantik (thead, tbody, th, td) dan mendukung penggayaan via kelas CSS. CSV ke Markdown menghasilkan tabel teks biasa yang dipisahkan pipe, digunakan di README GitHub dan dokumentasi. Gunakan HTML jika Anda membutuhkan kendali penggayaan atau kompatibilitas email; gunakan Markdown untuk dokumentasi dan repositori.
Apakah konverter menangani file CSV dengan field yang dikutip?
Ya. Parser mengikuti aturan RFC 4180: field yang dibungkus tanda kutip ganda dapat mengandung koma, newline, dan tanda kutip ganda literal (di-escape sebagai dua tanda kutip ganda berurutan). Tanda kutip dihapus dari output, dan konten field ditempatkan di dalam sel HTML.
Bisakah saya menggaya tabel HTML yang dihasilkan dengan CSS?
Output adalah HTML biasa tanpa inline style atau kelas, sehingga Anda dapat menerapkan CSS apa pun yang Anda inginkan. Tambahkan kelas ke elemen table, lalu gunakan selektor seperti table th untuk header, table td untuk sel, dan table tr:nth-child(even) untuk zebra striping. Framework seperti Bootstrap dan Tailwind memiliki kelas utilitas tabel bawaan.