CSV reader for browser with readable stream and csv dialect support, sync and async
npm install csvreader-js
npm i csvreader-js
`
For browser, download index.js and rename it to e.g.: csvreader.js.
Usage
$3
`
const {CSVReader} = require('csvreader-js');
`
$3
`
import {CSVReader} from 'csvreader-js';
`
$3
`
`
or check index.html for simple usage
Syntax
`
new CSVReader(input, options).read()
`
Parameters
$3
.read() returns an array [[col_0, col_1, ...], [...], ...]
$3
.read() returns a promise resolving an array
$3
https://specs.frictionlessdata.io//csv-dialect/
`
{
worker = false,
// csv dialect support
delimiter = ',',
lineTerminator = LF,
doubleQuote = true,
quoteChar = '"',
skipInitialSpace = false,
commentChar = '#'
}
`
Examples
Has no assumption on whethter chunks end with newline.
Even works if chunks are all 1 character long.
$3
`
let dialect = { skipInitialSpace: true, doubleQuote: true };
let csvreader = new CSVReader(new ReadableStream({
start(controller) {
let reader = new FileReader();
reader.addEventListener('load', () => {
let result = reader.result;
let step;
for (let i = 0; i < result.length; i += step) {
step = Math.trunc(Math.random() * (1000 - 1) + 1);
controller.enqueue(result.slice(i, i + step));
}
controller.close();
});
reader.readAsText(file);
}
}), dialect);
csvreader.read();
`
$3
`
await new Promise((resolve) => {
let reader = new FileReader();
reader.addEventListener('load', () => {
let csvreader = new CSVReader(reader.result, dialect);
resolve(csvreader.read());
});
reader.readAsText(file);
});
`
$3
`
new CSVReader(readableStream, {worker: true, ...dialect}).read();
``