カタログ系組版では、エクセルデータを起点としてカタログを組んでいく仕事があります。 いままではもっぱら Java / Groovy + POI を使って処理してきましたが、 Node.js でエクセルデータをパースできるか調べてみました。
stack overflow のこちらの記事 Reading Excel file using node.js の通りで簡単にパースできました。 SheetJS を使います。
「退屈なことはPythonにやらせよう」という本がありますが、これからは退屈なことは Node.js で済ませていきたい。
こんなエクセルデータをサンプルとして用意.
Node.js のプロジェクトをつくる:
$ mkdir potato
$ cd potato
$ npm init -y
$ npm install xlsx
potato.xlsx を プロジェクトディレクトリにコピーした上で、以下のコード index.js を用意:
const xlsx = require('xlsx')
const workbook = xlsx.readFile('potato.xlsx');
const sheetNames = workbook.SheetNames;
const jsonObject = xlsx.utils.sheet_to_json(workbook.Sheets[sheetNames[0]]);
// 行ごとに取り出して処理.
jsonObject.forEach( (item)=> {
const hinmei = item.品名;
const price = item.価格;
console.log(`- ${hinmei}: ${price} `);
});
ここでは、パースしたエクセルデータから 品名と価格だけを取り出してプリントしています.
実行すると以下のようになります.
$ node index.js
- ポテトチップス うすしお味: 1241
- ポテトチップス コンソメパンチ: 1322
- ポテトチップス のり塩: 1179
簡単です.