我已经尝试使用node.js npm包fast-csv,但我没有得到解决方案,我可以成功读取csv文件,现在我需要在现有的csv文件中添加一个新列。
我的问题:
如何向csv文件添加新列?如何更新csv?
overflow-wrap:break-word;
在上面的程序中,我使用了filecsv file1.csv,从i中取两列INSTALLED_APPS
和var csv = require("fast-csv");
var fs = require('fs');
var stream = fs.createReadStream("file1.csv");
var service = 'https://maps.googleapis.com/maps/api/distancematrix/json?origins=53.78943,-0.9985&destinations=53.540867,-0.510699&mode=driving&language=en-US';
var source = [];
var dest = [];
var distance = require('google-distance');
distance.apiKey = '************';
var i = 1;
csv
.fromStream(stream, { headers: true })
.on("data", function(data) {
//get source and distance array
source = data.SourceLatLong;
dest = data.DestBREPLatLong;
//print source and destinatoon
console.log(source);
console.log(dest);
distance.get({
// index: i,
origin: source,
destination: dest,
units: 'imperial'
},
function(err, map_data) {
if (err) return console.log(err);
//console.log(map_data);
//console miles of aff
console.log('source lat long ' + ':' + data.SourceLatLong + ' , ' + 'Dest lat long' + ':' + data.DestBREPLatLong + ',' + ' distance ' + ':' + map_data.distance + ' ' + i++);
});
})
.on("end", function() {
console.log("done");
});
,我计算距离(英里)。现在我需要将新的英里列添加到我的文件.csv
答案 0 :(得分:4)
使用csv-parser包而不是fast-csv,使用json2csv进行json到csv解析。
你想要做的是使用csv-parser将csv的每一行转换为json,在生成的json对象中添加一个新字段,为每一行执行此操作,将结果放入数组,将该数组转换为带有json2csv包的csv。
以下是代码:
var csv = require('csv-parser');
var fs = require('fs');
var json2csv = require('json2csv');
var dataArray = [];
fs.createReadStream('your-original-csv-file.csv')
.pipe(csv())
.on('data', function (data) {
data.newColumn = newColumnValue;
dataArray.push(data);
})
.on('end', function(){
var result = json2csv({ data: dataArray, fields: Object.keys(dataArray[0]) });
fs.writeFileSync(fileName, result);
});
fs.writeFileSync无论如何都会覆盖原始文件,因此您也可以保存到原始的csv文件中。