概要
- 【目的】手軽にCSV出力したい
-
- 環境
- Windows10
- VSCode
- Node v8.11.3
- 環境
- 参考
#CSV出力サンプルコード
csvwrite.js
const {createObjectCsvWriter} = require('csv-writer');
const csvfilepath = __dirname+'/message.csv'
const csvWriter = createObjectCsvWriter({
path: csvfilepath,
header: [
// {id: 'name', title: 'NAME'}, //Headerつける場合
// {id: 'lang', title: 'LANGUAGE'} //Headerつける場合
'name','lang' //Headerなしの場合
],
encoding:'utf8',
append :false, // append : no header if true
});
// Data for CSV
const records = [
{name: 'Bob', lang: 'French, English'},
{name: 'Mary', lang: 'English'},
{name: 'Alef', lang: 'English', age:23},
];
//Write CSV file
csvWriter.writeRecords(records) // returns a promise
.then(() => {
console.log('...Done');
});
作成されるCSV
message.csv
Bob,"French, English"
Mary,English
Alef,English
(本題?)Headerを自動でつけたい [Object.key]
Headerを出力したいObject配列から作成する。
//ObjectのKeyを{item:key, title:key}配列で返す関数の例
function makeHeader(obj){
let header=[]
header = Object.keys(obj).map( v => ({ id:v, title:v }) )
return header;
}
ヘッダー自動生成サンプル
csvwrite_autoheader.js
const {createObjectCsvWriter} = require('csv-writer');
const csvfilepath = __dirname+'/message.csv'
// Data for CSV
const records = [
{name: 'Bob', lang: 'French, English'},
{name: 'Mary', lang: 'English'},
{name: 'Alef', lang: 'English', age:23},
];
// Header Create from data
const csvWriter2 = createObjectCsvWriter({
path:csvfilepath,
// header: Object.keys(records[0]) // Headerなし
header:Object.keys(records[0]).map( v => ({ id:v, title:v })) // Header==Keys
})
//Write CSV
csvWriter2.writeRecords(records) // returns a promise
.then(() => {
console.log('...Done');
});
作成されるCSV
csv
name,lang
Bob,"French, English"
Mary,English
Alef,English