Friday, October 25, 2019 / Javascript, Node.js, DTP, Excel

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

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

更新: Node.js での 巨大なエクセルデータ読み込み

結論

stack overflow のこちらの記事 Reading Excel file using node.js の通りで簡単にパースできました.
「退屈なことはPythonにやらせよう」という本がありますが、これからは退屈なことは Node.js で済ませていきたい。

手順

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

example xlsx data

Node.js のプロジェクトをつくる:

mkdir potate
cd potate
npm init -y
npm install --save xlsx

potate.xlsx を プロジェクトディレクトリにコピーした上で、以下のコード index.js を用意:

const xlsx = require('xlsx')

const workbook = xlsx.readFile('potate.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

簡単です.

ポテトチップスが食べたくなってきた...