Статьи

Разбор файла CSV с помощью JavaScript

Конечный продукт
Что вы будете создавать

Формат файла CSV (Comma Separated Values) является популярным способом обмена данными между приложениями.

В этом кратком совете мы узнаем, как JavaScript может помочь нам визуализировать данные файла CSV.

Для начала давайте создадим простой CSV-файл. Для этого мы воспользуемся Mockaroo , онлайн-генератором тестовых данных. Вот наш файл:

Начально-CSV-файл

Теперь, когда мы сгенерировали файл, мы готовы проанализировать его и построить связанную таблицу HTML.

В качестве первого шага мы будем использовать функцию ajax для извлечения данных из этого файла:

1
2
3
4
$.ajax({
  url: ‘csv_data.csv’,
  dataType: ‘text’,
}).done(successFunction);

Предполагая, что запрос AJAX успешен, выполняется successFunction . Эта функция отвечает за анализ возвращаемых данных и преобразование их в таблицу HTML:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function successFunction(data) {
  var allRows = data.split(/\r?\n|\r/);
  var table = ‘<table>’;
  for (var singleRow = 0; singleRow < allRows.length; singleRow++) {
    if (singleRow === 0) {
      table += ‘<thead>’;
      table += ‘<tr>’;
    } else {
      table += ‘<tr>’;
    }
    var rowCells = allRows[singleRow].split(‘,’);
    for (var rowCell = 0; rowCell < rowCells.length; rowCell++) {
      if (singleRow === 0) {
        table += ‘<th>’;
        table += rowCells[rowCell];
        table += ‘</th>’;
      } else {
        table += ‘<td>’;
        table += rowCells[rowCell];
        table += ‘</td>’;
      }
    }
    if (singleRow === 0) {
      table += ‘</tr>’;
      table += ‘</thead>’;
      table += ‘<tbody>’;
    } else {
      table += ‘</tr>’;
    }
  }
  table += ‘</tbody>’;
  table += ‘</table>’;
  $(‘body’).append(table);
}

Итак, идея состоит в том, чтобы преобразовать каждую из строк CSV в строку таблицы. Имея это в виду, давайте кратко объясним, как работает код выше:

  • Во-первых, мы используем регулярное выражение для разделения ответа AJAX и, таким образом, для разделения строк CSV.
  • Затем мы перебираем строки CSV и разделяем их поля данных.
  • Наконец, мы перебираем поля данных и создаем соответствующие ячейки таблицы.

Кроме того, чтобы лучше понять этот код, рассмотрите следующую визуализацию:

CSV-представительство

На этом этапе важно выяснить, почему мы использовали /\r?\n|\r/ regex для разделения строк CSV.

Как вы, вероятно, уже знаете, существуют разные представления новой строки в разных операционных системах. Например, на платформах Windows символы, представляющие новую строку, являются \r\n . Тем не менее, используя приведенное выше регулярное выражение, мы можем сопоставить все эти возможные представления.

Кроме того, большинство текстовых редакторов позволяют нам выбирать формат новой строки. Взять, к примеру, Notepad ++ . В этом редакторе мы можем указать желаемый формат документа, перейдя по этому пути:

Notepad ++ - EOL

Чтобы проиллюстрировать это, рассмотрим наш файл. В зависимости от выбранного формата, он будет выглядеть так:

CSV-EOL

Прежде чем мы рассмотрим получившуюся таблицу, давайте добавим к ней несколько основных стилей:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
table {
  margin: 0 auto;
  text-align: center;
  border-collapse: collapse;
  border: 1px solid #d4d4d4;
}
 
tr:nth-child(even) {
  background: #d4d4d4;
}
 
th, td {
  padding: 10px 30px;
}
 
th {
  border-bottom: 1px solid #d4d4d4;
}

Вот сгенерированная таблица:

Сформирован-Table

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