Javascript 附加到nodejs中的csv文件(使用csv写入流)

Javascript 附加到nodejs中的csv文件(使用csv写入流),javascript,node.js,csv,electron,Javascript,Node.js,Csv,Electron,我目前正在使用将某些内容写入csv文件: var fs = require('fs'); var csvWriter = require('csv-write-stream') var writer = csvWriter() writer.pipe(fs.createWriteStream('out.csv')) writer.write({hello: "world", foo: "bar", baz: "taco"}) writer.end() 我喜欢这有多简单。但是,这始终会创建一个

我目前正在使用将某些内容写入csv文件:

var fs = require('fs');
var csvWriter = require('csv-write-stream')

var writer = csvWriter()
writer.pipe(fs.createWriteStream('out.csv'))
writer.write({hello: "world", foo: "bar", baz: "taco"})
writer.end()

我喜欢这有多简单。但是,这始终会创建一个新文件。我怎样才能将某些内容附加到此文件?我甚至可以使用同一个库吗?

实际上,
fs.createWriteStream
函数决定如何打开
'out.csv'

在您的情况下,可以使用
a
标志打开此文件进行添加:

writer.pipe(fs.createWriteStream('out.csv', {flags: 'a'}))

以下是此和的文档。

可能很晚,但对于遇到与我相同问题的人错误:未指定标题

  if (!fs.existsSync(finalPathFile))
    writer = csvWriter({ headers: ["header1", "header2"]});
  else
    writer = csvWriter({sendHeaders: false});

  writer.pipe(fs.createWriteStream(finalPathFile, {flags: 'a'}));
  writer.write({
    header1:"hello",
    header2:"world",
  });
  writer.end();
这个概念代表当您第一次访问文件时,您可以设置文件头,以便以后可以被其他后端软件(如Excel)读取。之后,当您以后再次访问该文件时,您不会设置标题。 但是请记住,每次写入文件时,都需要设置要写入的列。 然后,您将获得所需的结果,如下所示:

header1,header2
John,5th avenue,
Richard,St. Jorge street

我遇到的问题是,我试图在头之后写入的第一行数据将是空的(只有一堆逗号,如下,,,,,)

当我试图将sendHeaders设置为false时,我也收到了错误消息:No headers消息

我的解决方案基于最初的@Firecat答案。我修改了这个,这对我来说真的很好

const fs = require('fs');
var csvWriter = require('csv-write-stream');
var writer = csvWriter({sendHeaders: false}); //Instantiate var
var csvFilename = "C:\some\path\myfile.csv";

// If CSV file does not exist, create it and add the headers
if (!fs.existsSync(csvFilename)) {
  writer = csvWriter({sendHeaders: false});
  writer.pipe(fs.createWriteStream(csvFilename));
  writer.write({
    header1: 'DATE',
    header2: 'LASTNAME',
    header3: 'FIRSTNAME'
  });
  writer.end();
} 

// Append some data to CSV the file    
writer = csvWriter({sendHeaders: false});
writer.pipe(fs.createWriteStream(csvFilename, {flags: 'a'}));
writer.write({
  header1: '2018-12-31',
  header2: 'Smith',
  header3: 'John'
});
writer.end();

// Append more data to CSV the file    
writer = csvWriter({sendHeaders: false});
writer.pipe(fs.createWriteStream(csvFilename, {flags: 'a'}));
writer.write({
  header1: '2019-01-01',
  header2: 'Jones',
  header3: 'Bob'
});
writer.end();
使用fs.appendFile。 如果文件不存在,它将创建该文件,或者将数据附加到现有文件中

userObj=JSON.parse(JSON.stringify(userObj));//data to add
fs.appendFile('filename.csv', userObj, (err) => {
    if (err) console.error('Couldn\'t append the data');
    console.log('The data was appended to file!');
});