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

Javascript 将浮点数写入节点中的csv文件,javascript,node.js,excel,csv,floating-point,Javascript,Node.js,Excel,Csv,Floating Point,我试图从数据库中获取的json数据在nodejs中创建一个CSV文件 我创建一个对象数组作为我的数据 var allExpenses = []; expenses.forEach(function(expense) { allExpenses.push({ amount: expense.amount, identificator: expense.identificator,

我试图从数据库中获取的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中打开它,但浮点数字写得不正确,不能用于求和和和其他操作,其中一些被视为日期

在excel中通过CTRL+1->NUMBER设置这些数字的格式也没有帮助,因为这样被视为日期的值就完全关闭了

我尝试将excelStrings:true选项添加到json2csv模块,然后金额被正确写入,但被stringyfied(“0.456”)并且也无法转换为数字

有什么建议我可以试试吗?
感谢您的帮助。

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

我只需要根据金额生成字符串,并将浮点更改为“浮点逗号” f、 e:


好吧我找到了解决办法

我只需要根据金额生成字符串,并将浮点更改为“浮点逗号” f、 e:


你能分享一些JSON输入和CSV输出的示例行吗(例如,在记事本或其他东西中打开会得到什么)。不清楚
费用.金额的格式是什么。另外,您指定了匈牙利(?)日期格式,但没有指定运行Excel的机器的区域设置,您正试图在该机器上打开CSV。请检查我的答案以了解解决方案,主要问题是浮点而不是逗号:)您能分享一些JSON输入和CSV输出的示例行吗(例如,在记事本或其他东西中打开时会得到什么)。不清楚费用。金额的格式是什么。此外,您还指定了匈牙利语(?)日期格式,但您没有指定运行Excel的计算机的区域设置,您正试图在该计算机上打开CSV。请检查我的答案以了解解决方案,主要问题是浮点而不是逗号:)
expenses.forEach(function(expense) {
  var amountFormatted = expense.amount + '';
  allExpenses.push({
    amount: amountFormatted.replace('.', ','),
    ...
  })