首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >添加到nodejs中的csv文件(使用csv-写流)

添加到nodejs中的csv文件(使用csv-写流)
EN

Stack Overflow用户
提问于 2016-12-03 14:35:12
回答 4查看 34.1K关注 0票数 15

我目前正在使用csv-写流向csv文件写入一些内容:

代码语言:javascript
复制
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()

我喜欢这很容易。但是,这总是会创建一个新文件。我怎么能把什么附加到这个文件上呢?我能用同一个图书馆吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-12-03 14:53:29

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

在您的示例中,可以使用a标志打开此文件以进行添加:

代码语言:javascript
复制
writer.pipe(fs.createWriteStream('out.csv', {flags: 'a'}))

下面是这个函数标志的文档。

票数 11
EN

Stack Overflow用户

发布于 2017-05-04 23:00:23

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

代码语言:javascript
复制
  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 )所读取。之后,当您以后再次访问该文件时,不会设置标头。但是请记住,每次向文件写入时,都需要设置要写入的列。然后,您将得到您想要的结果,其结果如下所示:

代码语言:javascript
复制
header1,header2
John,5th avenue,
Richard,St. Jorge street
票数 25
EN

Stack Overflow用户

发布于 2019-01-04 20:04:11

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

当我试图设置sendHeaders false时,我也得到了错误:没有头消息。

我的解决方案是基于原始的@Firecat回答。我对此做了修改,这对我真的很有用。

代码语言:javascript
复制
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();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40948879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档