Анализ файла CSV с помощью JavaScript
Russian (Pусский) translation by Sergey Zhuk (you can also view the original English article)



Формат файла CSV (Comma Separated Values) является популярным способом обмена данными между приложениями.
В этом кратком совете мы узнаем, как JavaScript может помочь нам визуализировать данные CSV-файла.
Создание файла CSV
Для начала создадим простой CSV-файл. Чтобы сделать это, мы воспользуемся Mockaroo - онлайновым генератором тестовых данных. Вот наш файл:



Преобразование файла CSV в таблицу HTML
Теперь, когда мы сгенерировали файл, мы готовы разобрать его и создать связанную таблицу HTML.
В качестве первого шага мы будем использовать функцию ajax jQuery для извлечения данных из этого файла:
1 |
$.ajax({ |
2 |
url: 'csv_data.csv', |
3 |
dataType: 'text', |
4 |
}).done(successFunction); |
Если запрос AJAX выполнен успешно, функция success выполняется. Эта функция отвечает за разбор возвращаемых данных и преобразование их в таблицу HTML:
1 |
function successFunction(data) { |
2 |
var allRows = data.split(/\r?\n|\r/); |
3 |
var table = '<table>'; |
4 |
for (var singleRow = 0; singleRow < allRows.length; singleRow++) { |
5 |
if (singleRow === 0) { |
6 |
table += '<thead>'; |
7 |
table += '<tr>'; |
8 |
} else { |
9 |
table += '<tr>'; |
10 |
}
|
11 |
var rowCells = allRows[singleRow].split(','); |
12 |
for (var rowCell = 0; rowCell < rowCells.length; rowCell++) { |
13 |
if (singleRow === 0) { |
14 |
table += '<th>'; |
15 |
table += rowCells[rowCell]; |
16 |
table += '</th>'; |
17 |
} else { |
18 |
table += '<td>'; |
19 |
table += rowCells[rowCell]; |
20 |
table += '</td>'; |
21 |
}
|
22 |
}
|
23 |
if (singleRow === 0) { |
24 |
table += '</tr>'; |
25 |
table += '</thead>'; |
26 |
table += '<tbody>'; |
27 |
} else { |
28 |
table += '</tr>'; |
29 |
}
|
30 |
}
|
31 |
table += '</tbody>'; |
32 |
table += '</table>'; |
33 |
$('body').append(table); |
34 |
}
|
Итак, идея состоит в том, чтобы преобразовать каждую из строк CSV в строку таблицы. Имея это в виду, давайте кратко объясним, как работает вышеприведенный код:
- Во-первых, мы используем регулярное выражение для разделения ответа AJAX и, таким образом, разделяем строки CSV.
- Затем мы перебираем строки CSV и разбиваем их поля данных.
- Наконец, мы перебираем поля данных и создаем соответствующие ячейки таблицы.
Более того, чтобы лучше понять этот код, рассмотрите следующую визуализацию:



На данном этапе важно выяснить, почему мы использовали регулярно выражение/\r?\N|\r/ для разбиения строк CSV.
Как вы, наверное, уже знаете, существуют различные представления новой строки в разных операционных системах. Например, на платформах Windows символы, представляющие новую строку, - \r\n. Тем не менее, используя приведенное выше регулярное выражение, мы можем сопоставить все эти возможные представления.
Кроме того, большинство текстовых редакторов позволяют нам выбирать формат для новой строки. Возьмем, к примеру, Notepad ++. В этом редакторе мы можем указать желаемый формат документа, перейдя по этому пути:



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



Добавление стилей в таблицу HTML
Прежде, чем мы посмотрим на итоговую таблицу, добавим несколько основных стилей:
1 |
table { |
2 |
margin: 0 auto; |
3 |
text-align: center; |
4 |
border-collapse: collapse; |
5 |
border: 1px solid #d4d4d4; |
6 |
}
|
7 |
|
8 |
tr:nth-child(even) { |
9 |
background: #d4d4d4; |
10 |
}
|
11 |
|
12 |
th, td { |
13 |
padding: 10px 30px; |
14 |
}
|
15 |
|
16 |
th { |
17 |
border-bottom: 1px solid #d4d4d4; |
18 |
}
|
Вот сгенерированная таблица:



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



