Home About Contact
JavaScript , sheetjs , Node.js , DTP , Excel

Node.js での エクセルデータ読み込み

カタログ系組版では、エクセルデータを起点としてカタログを組んでいく仕事があります。 いままではもっぱら Java / Groovy + POI を使って処理してきましたが、 Node.js でエクセルデータをパースできるか調べてみました。

改良版: Node.js での 巨大なエクセルデータ読み込み

結論

stack overflow のこちらの記事 Reading Excel file using node.js の通りで簡単にパースできました。 SheetJS を使います。

「退屈なことはPythonにやらせよう」という本がありますが、これからは退屈なことは Node.js で済ませていきたい。

手順

こんなエクセルデータをサンプルとして用意.

potato

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

簡単です.