Excelファイルのデータを読み込んでNode-REDのフローで操作してみたいと思いましたので、早速やってみました。
今回はExcelファイルのデータを取り出すNode-REDのフローをご紹介します。
準備
Excelファイル
Excelファイルを用意します。
サンプルとしてSheet1に、以下の様なデータを用意してみました。

enebular editor
ローカルにあるファイルにアクセスしますのので、PCにenebular editorをインストールしておきます。
インストール方法はドキュメントをご覧ください。
enebular editorからenebularにサインインして、フローを一つ作成します。
インストールするノード
Excelファイルを読み込むノードには、Node-REDで公開されているnode-red-contrib-spreadsheet-inノードを使用します。
パレットの管理からノードをインストールします。

node-red-contrib-spreadsheet-inを検索して、ノードを追加ボタンを押します。

インストールすると、4つのノードが追加されます。

ノードの機能は以下のようになっています。
- book:スプレッドシートの内容をワークブックオブジェクトに変換します。
- sheet:ワークブックオブジェクトからシートオブジェクトを取り出します。
- cell:シートオブジェクトからセルの値を取り出します。
- sheet-to-json:シートオブジェクトをJSONオブジェクトの配列に変換します。
シートのデータを読み込むフローを作る
完成形のExcelファイルを読み込むフローはこちらです。

ファイルを読み込む
Excelファイルを読み込ませるには、最初にFile-inノードでファイルを読み込んで、読み込んだ結果をbookノードに渡す必要があります。file-inノードのファイル名には、ファイルのフルパスを入れています。出力形式は、バイナリバッファを選択します。


シートを指定する
Sheetノードにデータを取得したいシート名を記入します。

データの形式を設定する
sheet-to-jsonノードのデータタイプは、表示されるテキストか生データかを選択できます。
ヘッダーは、曖昧さのない最初の行をキーとして読み込むを選択します。

フローを実行する
Injectノードの左のボタンをクリックして、フローを一度だけ実行してみましょう。debugタブのデータを展開してみると左下の図のようになっていると思います。Excelの1行目のデータがキーとして読み込まれています。2行目以降のデータがキーに対応する値として読み込まれています。


特定のセルだけデータを取得する
特定のセルのデータを取り出したいときもあると思います。その時はcellノードを使用します。

セルの位置を指定します。データタイプを見ると様々なセルの情報を取得できるようです。

injectノードを実行すると、A1セルの生データが取得されています。

まとめ
今回はspreadsheet-inノードを使ったExcelファイルの操作をご紹介しました。
このノードを使って身の回りの業務の自動化に役立ててみようと思います。
今回使用したフローはDiscoverに公開済みです。ぜひお試しください。