Fast-CSV - 重新排列数组的列 object
Fast-CSV - Reorder columns of array object
我正在使用 fast-csv 从 objects 的数组生成 CSV 文件,我想更改列的顺序。
我尝试手动设置 headers,虽然它们以正确的顺序出现,但标题与列内容不匹配。我尝试使用以下内容:
const header = ['headerA', 'headerC', 'headerB'];
const data = [{"headerA":"itemA", "headerB":"itemB", "headerC":"itemC"}];
const ws = fs.createWriteStream('test.csv');
fastcsv.write(data, { headers: header }).pipe(ws);
结果是:
headerA, headerC, headerB
itemA, itemB, itemC
站点上的示例表明这应该有效,还是我遗漏了什么?
const csvStream = format({ headers: ['header2', 'header1'] });
csvStream.pipe(process.stdout).on('end', () => process.exit());
csvStream.write({ header1: 'value1a', header2: 'value1b' });
csvStream.write({ header1: 'value2a', header2: 'value2b' });
csvStream.write({ header1: 'value3a', header2: 'value3b' });
csvStream.write({ header1: 'value4a', header2: 'value4b' });
csvStream.end();
经过反复试验,我发现了以下作品:
const { format } = require('@fast-csv/format');
const header = ['headerA', 'headerC', 'headerB'];
const data = [{"headerA":"itemA", "headerB":"itemB", "headerC":"itemC"}];
const ws = fs.createWriteStream('test.csv');
const csvStream = format({ headers: header, alwaysWriteHeaders: true });
csvStream.pipe(ws);
data.forEach(row => {
csvStream.write(row);
});
csvStream.end()
我正在使用 fast-csv 从 objects 的数组生成 CSV 文件,我想更改列的顺序。
我尝试手动设置 headers,虽然它们以正确的顺序出现,但标题与列内容不匹配。我尝试使用以下内容:
const header = ['headerA', 'headerC', 'headerB'];
const data = [{"headerA":"itemA", "headerB":"itemB", "headerC":"itemC"}];
const ws = fs.createWriteStream('test.csv');
fastcsv.write(data, { headers: header }).pipe(ws);
结果是:
headerA, headerC, headerB
itemA, itemB, itemC
站点上的示例表明这应该有效,还是我遗漏了什么?
const csvStream = format({ headers: ['header2', 'header1'] });
csvStream.pipe(process.stdout).on('end', () => process.exit());
csvStream.write({ header1: 'value1a', header2: 'value1b' });
csvStream.write({ header1: 'value2a', header2: 'value2b' });
csvStream.write({ header1: 'value3a', header2: 'value3b' });
csvStream.write({ header1: 'value4a', header2: 'value4b' });
csvStream.end();
经过反复试验,我发现了以下作品:
const { format } = require('@fast-csv/format');
const header = ['headerA', 'headerC', 'headerB'];
const data = [{"headerA":"itemA", "headerB":"itemB", "headerC":"itemC"}];
const ws = fs.createWriteStream('test.csv');
const csvStream = format({ headers: header, alwaysWriteHeaders: true });
csvStream.pipe(ws);
data.forEach(row => {
csvStream.write(row);
});
csvStream.end()