CSV to HTML Table

Конвертировать CSV в HTML-таблицу

Попробовать пример

CSV-ввод

HTML-вывод

Работает локально · Безопасно вставлять секреты
HTML-таблица появится здесь…
Первая строка — заголовок:

Что такое конвертация CSV в HTML-таблицу?

Конвертация CSV в HTML-таблицу преобразует значения, разделённые запятыми, в структурированную HTML-разметку, которую браузеры отображают как визуальную таблицу. Результат использует стандартные элементы HTML, определённые в HTML Living Standard: table, thead, tbody, tr, th и td. В процессе конвертации каждая строка CSV отображается в элемент tr, а каждое поле — в ячейку td или th.

CSV-файлы хранят данные в виде обычного текста: строки разделены переносами строк, поля — разделителями (как правило, запятыми). CSV хорошо подходит для хранения данных и обмена между приложениями — Excel, Google Sheets, базами данных, — но не имеет слоя представления. HTML-таблицы добавляют этот слой, оборачивая данные в семантическую разметку с поддержкой оформления через CSS, сортировки через JavaScript и доступности с помощью атрибутов scope и aria-label.

Конвертация должна обрабатывать несколько граничных случаев, описанных в RFC 4180: поля в кавычках, содержащие запятые или переносы строк, экранированные двойные кавычки внутри полей и различные разделители (точки с запятой, табуляции, вертикальные черты). Корректный конвертер также экранирует HTML-сущности в содержимом ячеек, заменяя <, >, &, а также символы кавычек их эквивалентами в виде сущностей, чтобы предотвратить некорректную разметку и уязвимости XSS.

Зачем использовать конвертер CSV в HTML-таблицу?

Создавать HTML-таблицы вручную утомительно и чревато ошибками, особенно для наборов данных с десятками столбцов или сотнями строк. Этот конвертер выполняет разбор, экранирование и форматирование за один шаг.

Мгновенная генерация таблиц
Вставьте CSV и получите полную HTML-таблицу с правильной структурой thead и tbody. Никакой ручной записи тегов, никакого подсчёта ячеек в строке.
🔒
Обработка с приоритетом приватности
Вся конвертация выполняется в браузере с использованием JavaScript. Ваши CSV-данные никогда не отправляются на сервер, не логируются и не сохраняются.
🎯
Чистый, валидный результат
Сгенерированный HTML соответствует HTML Living Standard с правильной вложенностью: table > thead/tbody > tr > th/td. Специальные символы экранируются в виде HTML-сущностей, что предотвращает проблемы с отображением.
📋
Гибкие форматы ввода
Автоматически определяет запятые, точки с запятой, табуляции и вертикальные черты в качестве разделителей. Поддерживает правила цитирования RFC 4180, включая экранированные двойные кавычки и многострочные поля.

Варианты использования CSV в HTML-таблицу

Фронтенд-разработка
Сгенерируйте HTML-таблицу из примерных данных для прототипирования UI-компонента. Скопируйте результат напрямую в шаблон React, Vue или Angular и примените CSS-классы.
Создание шаблонов писем
Почтовые клиенты (Outlook, Gmail) надёжно отображают HTML-таблицы, но не поддерживают большинство методов CSS-вёрстки. Конвертируйте CSV-список контактов или отчёт в таблицу для встраивания в HTML-письмо.
Контент статических сайтов
Вставьте сгенерированную HTML-таблицу на страницу Jekyll, Hugo или Astro, если данные получены из экспорта таблицы. Плагины для сборки не нужны.
Отображение тестовых данных QA
Конвертируйте CSV-матрицу тестов в HTML-таблицу для включения в отчёт о тестировании или страницу Confluence. Рецензенты смогут просматривать результаты, не открывая табличный редактор.
Журналистика данных
Преобразуйте CSV-набор данных в HTML-таблицу, которую можно оформить и встроить в статью CMS. После конвертации добавьте CSS для чередования строк, сортировки или адаптивного оборачивания.
Обучение и документация
Создавайте примеры HTML-таблиц из реальных CSV-данных для руководств, документации API или учебных материалов. Студенты увидят как исходный формат, так и отрендеренный результат.

Справочник по элементам HTML-таблицы

Хорошо структурированная HTML-таблица использует семантические элементы, разделяющие заголовки, тело и подвал. Программы чтения с экрана и поисковые системы используют эти элементы для понимания структуры таблицы. Группировка строк с помощью thead, tbody и tfoot позволяет браузерам применять независимую прокрутку и повторять строки заголовков в макетах для печати.

ЭлементРольПримечания
<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-таблица

CSV — это транспортный формат, оптимизированный для простоты, тогда как HTML — формат представления, оптимизированный для отображения, доступности и интерактивности в браузерах.

CSV
Формат обычного текста. Без типов данных: каждое значение является строкой. Без оформления, вложенности, метаданных. Строки разделяются переносами строк, поля — разделителями. Размер файла минимален. Универсально поддерживается таблицами, базами данных и ETL-инструментами. Определён в RFC 4180.
HTML Table
Формат разметки с семантической структурой. Различает заголовки (th) и данные (td). Поддерживает атрибуты colspan, rowspan, scope и class для оформления и доступности. Браузеры разбирают его в DOM для взаимодействия через CSS и JavaScript. Можно сортировать, фильтровать или разбивать на страницы с помощью библиотек вроде DataTables без серверной обработки.

Примеры кода

Ниже показано, как программно конвертировать CSV в HTML-таблицы на разных языках программирования. Каждый пример обрабатывает строку заголовков отдельно и экранирует HTML-сущности в содержимом ячеек. Эти фрагменты готовы к вставке в скрипт, сборочный конвейер или конечную точку серверного API, генерирующую HTML-отчёты из экспорта данных.

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

Часто задаваемые вопросы

Как конвертировать CSV в HTML-таблицу?
Вставьте CSV в панель ввода. Конвертер разбирает каждую строку, отображает первую строку в элементы th внутри thead, а остальные строки оборачивает в элементы td внутри tbody. Результат — полная HTML-таблица, готовая к копированию.
Является ли сгенерированный HTML доступным?
В результате используются элементы thead и th, которые предоставляют программам чтения с экрана структурную информацию о таблице. Для полного соответствия WCAG 2.1 следует добавить атрибуты scope к ячейкам заголовков и элемент caption с описанием содержимого таблицы.
Что происходит со специальными символами вроде < и & в CSV?
Конвертер экранирует все HTML-чувствительные символы: < становится &lt;, > становится &gt;, & становится &amp;, а двойные кавычки становятся &quot;. Это предотвращает некорректную разметку и защищает от XSS при встраивании таблицы в веб-страницу.
Можно ли конвертировать файл с разделителями точкой с запятой или табуляцией?
Да. Инструмент автоматически определяет разделитель, анализируя первую строку ввода. Поддерживаются запятые, точки с запятой, табуляции и вертикальные черты. Предварительно конвертировать файл в формат с запятыми не нужно.
В чём разница между CSV в HTML и CSV в таблицу Markdown?
CSV в HTML создаёт отображаемую браузером разметку с семантическими элементами (thead, tbody, th, td) с поддержкой оформления через CSS-классы. CSV в Markdown создаёт таблицы в виде обычного текста с разделителями вертикальной чертой, используемые в README на GitHub и документации. Используйте HTML, когда нужен контроль над оформлением или совместимость с почтой; используйте Markdown для документации и репозиториев.
Обрабатывает ли конвертер CSV-файлы с полями в кавычках?
Да. Парсер следует правилам RFC 4180: поля, заключённые в двойные кавычки, могут содержать запятые, переносы строк и буквальные двойные кавычки (экранированные как две последовательные двойные кавычки). Кавычки удаляются из результата, а содержимое поля помещается внутрь HTML-ячейки.
Можно ли оформить сгенерированную HTML-таблицу с помощью CSS?
Результат представляет собой чистый HTML без встроенных стилей и классов, поэтому вы можете применять любой CSS. Добавьте класс к элементу table, затем используйте селекторы вроде table th для заголовков, table td для ячеек и table tr:nth-child(even) для чередования строк. Фреймворки Bootstrap и Tailwind имеют встроенные утилиты для оформления таблиц.