【问题标题】:Writing float numbers into csv file in node将浮点数写入节点中的csv文件
【发布时间】:2017-02-03 15:43:42
【问题描述】:

我正在尝试根据从数据库获取的 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”)并且也无法转换为数字。

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

【问题讨论】:

  • 您能否分享几行 JSON 输入和 CSV 输出的示例(例如,通过在记事本中打开会得到什么)。目前尚不清楚expense.amount 的格式是什么。此外,您指定了匈牙利 (?) 日期格式,但没有指定运行 Excel 的机器的区域设置,您尝试在该机器上打开 CSV。
  • 检查我的答案以获得解决方案,主要问题是浮点数而不是逗号 :)

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2016-03-14
    • 1970-01-01
    • 2017-11-11
    • 2014-09-30
    • 2019-10-31
    • 2021-12-22
    相关资源
    最近更新 更多