我目前正在使用csv-写流向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()我喜欢这很容易。但是,这总是会创建一个新文件。我怎么能把什么附加到这个文件上呢?我能用同一个图书馆吗?
发布于 2016-12-03 14:53:29
发布于 2017-05-04 23:00:23
可能很晚,但对于遇到与我相同的问题的人,错误:没有标头指定
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发布于 2019-01-04 20:04:11
我遇到的问题是,我试图在头后写的第一行数据是空的(只有一堆逗号,如,,,)。
当我试图设置sendHeaders false时,我也得到了错误:没有头消息。
我的解决方案是基于原始的@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();https://stackoverflow.com/questions/40948879
复制相似问题