@coolgk/csv
a javascript / typescript module
npm install @coolgk/csv
read and write csv files
Examples
import { Csv } from '@coolgk/csv';
const csv = new Csv({
tmpConfig: { dir: '/tmp/csv' }
});
const arrayData = [
[1,2,3,4,5],
[6,7,7,8,9],
[0,5,8,90,65]
];
const objectData = [
{col1: 'ab', col2: 'cd', col3: 'ef'},
{col1: '2ab', col2: '2cd', col3: '2ef'},
{col1: '3ab', col2: '3cd', col3: '3ef'}
];
csv.createFile(
arrayData,
{
columns: ['column 1', 'column 2', 'column 3', 'h4', 'h5'],
formatter: (row) => {
return row.map((value) => 'formatted-' + value);
}
}
).then((csvFilePath) => {
console.log(csvFilePath);
read(csvFilePath, ['column 1', 'column 2', 'column 3', 'h4', 'h5']);
});
csv.createFile(
objectData,
{
columns: ['col1', 'col2', 'col3'],
formatter: (row) => {
return [row.col1 + '+format', row.col2 + '+format', row.col3 + '+format'];
}
}
).then((csvFilePath) => {
console.log(csvFilePath);
read(csvFilePath, ['col1', 'col2', 'col3']);
});
function read (file, columns) {
const lines = csv.readFile(file, {columns: columns});
lines.forEach(
(lineArray, index) => {
console.log(lineArray, index);
},
(total) => {
console.log('read done, total:', total);
}
);
const lines2 = csv.readFile(file);
lines2.forEach(
(lineArray, index) => {
console.log(lineArray, index);
},
(total) => {
console.log('read done, total:', total);
}
);
}
Csv
Kind: global class
new Csv([options])
Param | Type | Default | Description |
---|
[options] | object | | |
[options.tmpConfig] | object | | config for the generated file |
[options.tmpConfig.mode] | number | 0600 | the file mode to create with, defaults to 0600 on file and 0700 on directory |
[options.tmpConfig.prefix] | string | "Date.now()" | the optional prefix |
[options.tmpConfig.dir] | string | "os.tmpdir()" | the optional temporary directory, fallbacks to system default |
csv.parse(value, [options]) ⇒ promise.<array>
parse a string as csv data and returns an array promise
Kind: instance method of Csv
Param | Type | Default | Description |
---|
value | string | | a csv string |
[options] | object | | |
[options.columns] | Array.<string> | | array of headers e.g. ['id', 'name', ...] if headers is defined, the row value will be objects |
[options.limit] | number | 0 | number of rows to read, 0 = unlimited |
[options.delimiter] | string | "','" | csv delimiter |
csv.readFile(file, [options]) ⇒ object
read a csv file. the return value can ONLY be used in a forEach() loop
e.g. readFile('abc.csv').forEach((row, index) => { console.log(row, index) })
Kind: instance method of Csv
Returns: object
- - { forEach: ((row, index) => void, (totalCount) => void) => void }
Param | Type | Default | Description |
---|
file | string | | file path |
[options] | object | | |
[options.columns] | Array.<string> | | array of headers e.g ['id', 'name', ...] if defined, rows become objects instead of arrays |
[options.limit] | number | 0 | number of rows to read, 0 = unlimited |
[options.delimiter] | string | "','" | csv delimiter |
csv.createFile(data, [options]) ⇒ promise.<string>
Kind: instance method of Csv
Returns: promise.<string>
- - file path of the csv file generated
Param | Type | Default | Description |
---|
data | array | cursor | | mongo cursor or array of data |
[options] | object | | |
[options.columns] | Array.<string> | | array of headers e.g. ['id', 'name', 'email'] |
[options.formatter] | function | | callback for formatting row data. It takes one row from data as parameter and should return an array e.g. (rowData) => [rowData.id, rowData.name, 'formatted data'], |
[options.delimiter] | string | "','" | Set the field delimiter, one character only, defaults to a comma. |
[options.filepath] | string | | file path is automatically generated if empty |