web-dev-qa-db-fra.com

Écrire dans un CSV dans Node.js

J'ai du mal à trouver un moyen de écrire des données sur un CSV dans Node.js.

Il existe plusieurs plugins CSV disponibles, mais ils n'écrivent que sur stdout.

Idéalement, je veux écrire sur une base ligne par ligne en utilisant une boucle.

37
Phil Bottomley

Les documents pour node-csv-parser (npm install csv) indique spécifiquement qu'il peut être utilisé avec des flux (voir fromStream, toStream). Il n'est donc pas codé en dur d'utiliser stdout.

Plusieurs autres analyseurs CSV apparaissent également lorsque vous npm search csv - vous voudrez peut-être aussi les regarder.

25
Joe White

Vous pouvez utiliser fs ( https://nodejs.org/api/fs.html#fs_fs_writefile_file_data_options_callback ):

var dataToWrite;
var fs = require('fs');

fs.writeFile('form-tracking/formList.csv', dataToWrite, 'utf8', function (err) {
  if (err) {
    console.log('Some error occured - file either not saved or corrupted file saved.');
  } else{
    console.log('It\'s saved!');
  }
});
34
John Vandivier

Voici un exemple simple utilisant csv-stringify pour écrire un ensemble de données qui tient en mémoire dans un fichier csv en utilisant fs.writeFile.

import stringify from 'csv-stringify';
import fs from 'fs';

let data = [];
let columns = {
  id: 'id',
  name: 'Name'
};

for (var i = 0; i < 10; i++) {
  data.Push([i, 'Name ' + i]);
}

stringify(data, { header: true, columns: columns }, (err, output) => {
  if (err) throw err;
  fs.writeFile('my.csv', output, (err) => {
    if (err) throw err;
    console.log('my.csv saved.');
  });
});
12
cbaigorri