我正在尝试使用从数据库获取的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")并且也不能转换为数字。
我可以尝试任何提示或建议吗? 任何帮助表示赞赏。
答案 0 :(得分:0)
好的,我设法找到了解决方案,
我只需要从金额中创建字符串并将浮点数更改为“浮动逗号” f.e:
expenses.forEach(function(expense) {
var amountFormatted = expense.amount + '';
allExpenses.push({
amount: amountFormatted.replace('.', ','),
...
})