javascript - Fast-CSV - 重新排列数组对象的列
问题描述
我正在使用 fast-csv 从对象数组生成 CSV 文件,并且我想更改列的顺序。
我尝试手动设置标题,虽然它们以正确的顺序出现,但标题与列内容不匹配。我尝试使用以下内容:
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()
推荐阅读
- haskell - 初学者| 整数列表的 luhn 算法
- ios - 为 iOS 模拟器构建,但链接框架是为 iOS 构建的。Xcode 12
- excel - 表格根据下拉菜单自动填充信息
- docker - Keycloak - has 算法的无效配置:找不到密码散列提供程序
- c# - 从 web api 响应中删除 $id
- java - 为什么我总是需要在 intellij 中执行主要 java 代码之前运行“maven clean install”?
- java - Spark Java PCA:用于随机播放的 Java 堆空间和缺少输出位置
- python - MongoDB(PyMongo)分页具有不同的不给出一致的结果
- javascript - 如何使十进制以在 amCharts 中占用最多两 (2) 个系列值?
- android - Ionic 3:更新到 cordova-android 9 后无法从驱动器中选择文件