xlsxファイルからjsonファイルを作るのを自動化したかったので、Node.jsを使ってファイル取得をやってみた。
ファイルをNode.jsでゴニョゴニョするにはFile System
というモジュールが必要。
利用するにはファイル内でrequire('fs')
します。
index.js
"use strict"
let fs = require('fs');
fs.readdirを使用すると非同期的にファイルを取得してくれる。
第一引数で、ファイルを取得したいディレクトリ、第二引数のコールバックでファイル名が配列で帰ってくる。
index.js
"use strict"
let fs = require('fs');
fs.readdir('.', function(err, files){
if (err) throw err;
console.log(files);
});
これと、node-xlsx-jsonを利用して、同じ階層にあるxlsxファイルをjsonファイルに変換して出力してみました。
index.js
"use strict";
const fs = require('fs');
const xlsx2json = require("xlsx-to-json");
fs.readdir('.', function(err, files){
if (err) throw err;
files.forEach(function(file){
if(fs.statSync(file) && /.*\.xlsx$/.test(file)){
let fileName = file.split('.')[0];
xlsx2json({
input: file,
output: `${fileName}.json`
}, function(err, result) {
if(err) {
console.error(err);
}else {
console.log(result);
}
});
}
})
});
fs.statSync
はファイルが存在するかどうかをチェックする事ができます。
いちいち文字列埋め込むのは大変なので、スプレッドシートでうまく管理して、
EJSやPugなどでうまいこと突っ込むと大量生産が捗りそうです。
参考資料
Node.jsでフォルダの直下にあるファイルやフォルダのリストを取得する
http://info-i.net/fs-readdir
node.js ファイル一覧を取得する
http://qiita.com/_shimizu/items/f08eaacdbcdce0204e36