【发布时间】:2017-04-06 09:34:12
【问题描述】:
我有包含数据列表的 excel 表。
- 读取excel数据
- 使用 API 针对另一个系统搜索 excel 数据
- 获取顶级结果数据并转换为 csv 文件。
到这一步工作良好。但之后我需要将数据格式化为 csv 文件,如 excel 数据和搜索结果都必须显示在 csv 文件中。
这里我无法将 excel 数据导入 csv 文件。例如,“Honda”是 excel 文件中的汽车名称,我正在读取它并搜索另一个系统。这些结果需要在 csv 中显示。
请指教。
Excel 输入:
Car name, Description
Honda, some description
API 响应数据:
[{
"total": 10,
"results": [{
"name": {
"val": "Honda",
"id": "0271b276",
"type": "String",
},
"attributes": [{
"val": "accord",
"type": "field1",
}, {
"val": "test123",
"type": "field3",
}],
}]
},
]
CSV 文件中的预期输出。
Car Name , Description,Total results,Make , Model
honda , Description,10 , Honda, accord
代码
const _ = require('lodash');
const xlsx = require('xlsx');
const workbook = xlsx.readFile(__dirname + '/test.xlsx');
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
for (let z in worksheet) {
if(z.toString()[0] === 'A'){
request({
url: 'http://url', //URL to hit
method: 'POST',
json: {
query: worksheet[z].v,
}
}, function(error, response, data){
if(error) {
console.log(error);
} else {
var fields = ['Make','Model','total', 'results[0].name.val','results[0].name[0].val'];
var fieldNames = ['Make','Model','Total','Name','Description'];
var opts1 = {
data: data,
fields: fields,
fieldNames: fieldNames,
};
var json2csv = require('json2csv');
var csv = json2csv(opts1);
fs.writeFile('file.csv', csv, function(err) {
if (err) throw err;
console.log('file saved');
});
【问题讨论】:
-
我没有看到第二个数组,我看到一个包含一个对象和一个数组的数组。也正如@T.J.Crowder 建议的那样,您在
var fieldnames中缺少' -
请提供您期望的输出示例。
-
我的期望是在 csv 文件中包含这 5 列。
-
很不清楚你想要什么或问题是什么。如果您想得到答案,我建议您以更易于理解的方式重新表述您的问题。
-
已更新问题,请再次查看。
标签: javascript node.js node-modules