如何正确组装csv文件以避免列移位

时间:2015-06-06 00:21:12

标签: javascript node.js csv

在我的节点应用中,我正在尝试清理csv文件。 首先,我将它分成不同的行 然后我在第一行(列标题)中替换不需要的字符 然后我通过将各个行推入一个新数组并将该数组写入新的.csv文件来重新组装该文件 出于某种原因,我的所有行最终都相对于标题行移位了1个位置。 我已经在vu编辑器中打开了生成的文件,并且可以看到,所有行都以某种方式获得了","在围困中的角色

我知道我做错了什么,却看不出那是什么。

这是我的代码:

var XLSX = require('xlsx');

var fs = require('fs');

var csv = require("fast-csv");

var workbook = XLSX.readFile('Lineitems.xls');

var worksheet = workbook.Sheets['Sheet1'];

var csv_conversion = XLSX.utils.sheet_to_csv(worksheet);

var csv_lines = csv_conversion.split('\n');

var dirtyHeaderLine = csv_lines[0];

var cleanHeaderLine = dirtyHeaderLine.replace(/\./g,"")
    .replace(/"'"/g,"")
    .replace(/","/g,"")
    .replace(/"\/"/g,"")
    .replace(/"#"/g,"");

cleanHeaderLine = cleanHeaderLine.replace(/,+$/, "");

console.log(cleanHeaderLine);

csv_lines[0] = cleanHeaderLine;

var newCsvLines = [];

csv_lines.forEach(function(line){
    newCsvLines.push(line + "\n");
});

fs.writeFile('clean_file.csv', newCsvLines, function(err) {
    if (err) throw err;
    console.log('clean file saved');
});

1 个答案:

答案 0 :(得分:1)

我在这里看不到任何明显的错误(可能是你的正则表达式的东西?不是那些专家),但这将解决你的问题。

if (line.charAt(0) == ',') { line = line.substring(1); }

相应地调整变量。我不认为我和你有同样的情况。

编辑:这是一个有效的JSBin。

http://jsbin.com/mirocedagi/1/edit?html,js,output