强制csv-write-stream始终使用双引号(nodejs和electronicjs)

时间:2019-01-04 20:21:26

标签: javascript node.js electron

我正在使用csv-write-stream在nodejs和electronicjs项目中创建数据并将数据附加到CSV。

是否有一种方法可以强制它始终在每行的每个条目周围使用双引号?因此,行将如下所示:

"2018-12-31","Bob","Jones"

我当前的工作代码(减去双引号)是这样:

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();

这将输出如下所示的行,且不带双引号:

2018-12-31,Bob,Jones

如果您手动尝试将双引号添加到数据中,则csv-write-stream实际上会将数据包装在双引号中,因此您将得到以下结果:

"""2018-12-31""","""Bob""","""Jones"""

1 个答案:

答案 0 :(得分:0)

看代码,看来这个功能没有实现。它测试每个值是否包含特殊字符(分隔符\n\r"),并且仅在这些字符位于字符串化值中时才添加引号。因此,要么使用其他工具,要么派生并提交项目的PR :)。该项目似乎有一个相关的问题:https://github.com/maxogden/csv-write-stream/issues/30