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

标签 javascript node.js csv

在我的 Node 应用程序中,我正在尝试清理 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');
});

最佳答案

我在这里没有看到任何明显的错误(也许你的正则表达式有什么问题?不是这方面的专家),但这会解决你的问题。

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

相应地调整您的变量。我想我没有和你一样的情况。

编辑:这是一个正在运行的 JSBin。

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

关于javascript - 如何正确组装 csv 文件以避免列移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677628/

相关文章:

node.js - Postman 中的意外 ' ' 要求注册一个带有 Passport 的帐户, Sequelize 和 express

csv - 通过 SSIS 将 datetimeoffset 从 csv 文件导入表的问题

ruby-on-rails - 我可以使用转换通过 kiba 复制行吗?

Python:如何最好地解析 csv 并仅计算一个子集的值

node.js - AES-256-CBC 错误解密

javascript - Vue.js 中的 Revolution Slider jquery 插件

javascript - 我怎样才能 "Reduce JavaScript execution time"的外部脚本?

javascript - 将 Cordova 版本 9.0.0 降级到 8.1.2 不起作用

JavaScript 请求/操作框架还是工具包?

javascript - 使用 AngularJS 方式通过对象数组中的属性查找对象