Javascript 将浮点数写入节点中的csv文件
我试图从数据库中获取的json数据在nodejs中创建一个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,
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('.', ','),
...
})