将浮点数写入节点中的csv文件

时间:2017-02-03 15:43:43

标签: javascript node.js excel csv floating-point

我正在尝试使用从数据库获取的json数据在nodejs中创建一个CSV文件。

我创建了一个对象数组作为我的数据

var allExpenses = [];
expenses.forEach(function(expense) {
            allExpenses.push({
                amount: expense.amount,
                identificator: expense.identificator,
                person: expense.person.last_name + ' ' + expense.person.first_name,
                date: moment.tz(expense.date, "Europe/Budapest").format("D.M.YYYY"),
                description: expense.description || '-'
            });
        });

然后我使用json2csv模块创建csv数据并通过fs将其写入文件

//create csv
var csvFields = ['amount', 'identificator', 'person', 'date', 'description'];
var csv = require('json2csv')({data: allExpenses, fields: csvFields, del: ';'});

var filename = new Date().valueOf() + '_csv_expenses.csv';
var filepath = config.path + '/reports/' + filename;
fs.writeFile(filepath, '\ufeff' + csv, 'utf-8', function(err) {
    if(err) {
        console.log(err);
        res.status(500);
        res.json({success: false, msg: 'Error creating csv'});
    } else {
        console.log('csv file saved');
        res.status(200);
        res.json({success:true, filename: filename});
    }
});

这正确地创建了csv文件,我可以在excel中打开它,但是浮点数不能正确写入并且不能用于SUM和其他操作,其中一些被视为DATE

通过CTRL + 1在Excel中格式化这些数字 - > NUMBER也没有帮助,因为那时被视为DATE的值完全关闭。

我尝试将选项excelStrings:true添加到json2csv模块,然后金额正确写入但是字符串(=" 0.456")并且也不能转换为数字。

我可以尝试任何提示或建议吗? 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

好的,我设法找到了解决方案,

我只需要从金额中创建字符串并将浮点数更改为“浮动逗号” f.e:

expenses.forEach(function(expense) {
  var amountFormatted = expense.amount + '';
  allExpenses.push({
    amount: amountFormatted.replace('.', ','),
    ...
  })