Парсим CSV непосредственно с помощью JavaScript


Сегодня мы расскажем вам о небольшой JS библиотеке, с помощью которой сможем распарсить CSV файл. Данный чудо-инструмент называется PapaParse и найти его можно как на официальном сайте, так и на странице GitHub. Возможности данной библиотеки впечатляют. Парсинг файла по стандартный настройкам В данном случае PapaParse сам просканирует первые несколько строк и определит разделитель между ячейками. 01 var results = Papa.parse(csvString); 02 /* 03 { 04 data: ... 05 errors: ... 06 meta: { 07 delimiter: "\t", 08 ... 09 } 10 } 11 */ Парсинг локального файла Для парсинга отдельного файла, передайте его в PapaParse вместо строки (HTML5 File API). 1 Papa.parse(file, { 2 complete: function(results) { 3 console.log(results); 4 } 5 }); Парсинг удалённого файла Если же CSV файл находится на другом сайте, то код будет следующим: 1 Papa.parse("http://example.com/bigfoo.csv", { 2 download: true, 3 step: function(row) { 4 console.log("Row:", row.data); 5 }, 6 complete: function() { 7 console.log("All done!"); 8 } 9 }); Парсинг огромного по размеру файла с блокированием страницы Если файл очень весом, то вы можете воспользоваться опцией step, с помощью которой будет осуществлена считка по строчкам, а не целиком. 1 Papa.parse("http://example.com/bigfoo.csv", { 2 download: true, 3 step: function(row) { 4 console.log("Row:", row.data); 5 }, 6 complete: function() { 7 console.log("All done!"); 8 } 9 }); Парсинг огромного по размеру файла без блокирования страницы Если же вам необходимо считать построчно огромный файл без блокирования страницы, то выставите true опции worker: 1 Papa.parse(bigFile, { 2 worker: true, 3 step: function(row) { 4 console.log("Row:", row.data); 5 }, 6 complete: function() { 7 console.log("All done!"); 8 } 9 }); Доступ к данным по ключам (согласно шапке документа) Если первой строкой документа является шапка с названием колонок, по которым вы хотите в дальнейшем обращаться к данным, то реализовать это можно с помощью следующей настройки: 1 var results = Papa.parse(csv, { 2 header: true 3 }); Преобразование типов для цифр Если же вам необходимо чтобы PapaParse сразу же преобразовывал числа в виде строк в числа, которые можно складывать, умножать … то в помощь вам следующая настройка: 1 var results = Papa.parse(csv, { 2 dynamicTyping: true 3 }); Игнорируем комментарии В случае, если в CSV файле присутствует множество комментариев, то удалить их из результатов можно, указав знак комментария в следующей настройке: 1 var results = Papa.parse(csv, { 2 comments: "#" 3 }); Работа совместно с jQuery 01 $("input[type=file").parse({ 02 config: { 03 complete: function(results, file) { 04 console.log("File done:", file, results); 05 } 06 }, 07 complete: function() { 08 console.log("All files done!"); 09 } 10 }); Конвертация JSON в CSV Ну и напоследок ещё одна волшебная возможность данной чудо-библиотеки, конвертация данных из формата JSON в CSV: 1 var csv = Papa.unparse(yourData);