kidoOooOoooOOom

IT系で開発やってます

Node.jsでエクセルparseして出力など

本来はやりたくないことだが、大量のエクセルファイルで用意されてしまったデータから必要なものだけ抜き出して整形して出力する必要性があったので対応した。
使用したのは xlsx モジュール

例えば、下記のようなテンプレートのエクセルファイルがあるとする。
f:id:gidooom:20150213162534p:plain

このエクセルファイルを開いて、指定の要素を取り出すコードは下記の通り。

var fs = require("fs");
var XLSX = require('xlsx');

var PROP_MAP = {
  'C2': 'master_id',
  'C4': 'name',
  'C5': 'description',
  'C6': 'age',
  'C7': 'height',
  'C8': 'weight',
};

var workbook = XLSX.readFile('hogehoge.xlsx');

workbook.SheetNames.forEach(function(y) {
  var worksheet = workbook.Sheets[y];
  for (var z in worksheet) {
    if(z[0] === '!') continue;
    console.log(z + "=" + JSON.stringify(worksheet[z].v));
  }
});

出力結果は下記の通り。

B2="master_id"
C2=1000
B4="name"
C4="hogehoge man"
B5="description"
C5="saying hogehoge"
B6="age"
C6=35
B7="height"
C7="180cm"
B8="weight"
C8="75kg"

後は取得できたデータをごにょごにょ整形して出力してあげればおk。