PAPA PARSE
Papa Parse is a powerful, in-browser CSV parser for the big boys and girls :)
If you do need easy CSV parsing and conversion back to CSV, take a look at it!
// Parse CSV string
var data = Papa.parse(csv);
// Convert back to CSV
var csv = Papa.unparse(data);
// Parse local CSV file
Papa.parse(file, {
complete: function(results) {
console.log("Finished:", results.data);
}
});
// Stream big file in worker thread
Papa.parse(bigFile, {
worker: true,
step: function(results) {
console.log("Row:", results.data);
}
});
SIMPLE TESTDRIVE
<input type="file" name="File Upload" id="txtFileUpload" accept=".csv" />
document.getElementById('txtFileUpload').addEventListener('change', upload, false);
function upload(evt) {
var data = null;
var file = evt.target.files[0];
var reader = new FileReader();
reader.readAsText(file);
reader.onload = function(event) {
var csvData = event.target.result;
var data = Papa.parse(csvData, {header : true});
console.log(data);
};
reader.onerror = function() {
alert('Unable to read ' + file.fileName);
};
}
ABOUT
Papa Parse is the fastest in-browser CSV (or delimited text) parser for JavaScript. It is reliable and correct according to RFC 4180, and it comes with these features:
- Easy to use
- Parse CSV files directly (local or over the network)
- Fast mode
- Stream large files (even via HTTP)
- Reverse parsing (converts JSON to CSV)
- Auto-detect delimiter
- Worker threads to keep your web page reactive
- Header row support
- Pause, resume, abort
- Can convert numbers and booleans to their types
- Optional jQuery integration to get files from
<input type="file">elements - One of the only parsers that correctly handles line-breaks and quotations
USAGE
I am currently using it to quickly parse Adobe Audition CSV marker files and prepare them for storage for my podcast.
Name Start Duration Time Format Type Description Ankündigungen 0:20.432 0:00.000 decimal Cue Stargate Table Read 1:12.811 0:00.000 decimal Cue Dune Part One 2021 1:58.677 0:00.000 decimal Cue Dust - Cosmo 2:20.925 0:00.000 decimal Cue Nina - Beyond Memory 2:51.276 0:00.000 decimal Cue
Papa.unparse(tabData, {
delimiter: "\tab",
header: true,
newline: "\r\n",
skipEmptyLines: true
})
