ExcelデータをNode-REDで使う方法

Excelファイルのデータを読み込んでNode-REDのフローで操作してみたいと思いましたので、早速やってみました。

今回はExcelファイルのデータを取り出すNode-REDのフローをご紹介します。

準備

Excelファイル

Excelファイルを用意します。

サンプルとしてSheet1に、以下の様なデータを用意してみました。

test.xlsx

enebular editor

ローカルにあるファイルにアクセスしますのので、PCにenebular editorをインストールしておきます。
インストール方法はドキュメントをご覧ください。

enebular editorからenebularにサインインして、フローを一つ作成します。

インストールするノード

Excelファイルを読み込むノードには、Node-REDで公開されているnode-red-contrib-spreadsheet-inノードを使用します。

パレットの管理からノードをインストールします。

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

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

spreadsheet-in-nodes

ノードの機能は以下のようになっています。

  • book:スプレッドシートの内容をワークブックオブジェクトに変換します。
  • sheet:ワークブックオブジェクトからシートオブジェクトを取り出します。
  • cell:シートオブジェクトからセルの値を取り出します。
  • sheet-to-json:シートオブジェクトをJSONオブジェクトの配列に変換します。

シートのデータを読み込むフローを作る

完成形のExcelファイルを読み込むフローはこちらです。

ファイルを読み込む

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

File-inノードのプロパティ

File-inノードのプロパティ

シートを指定する

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

データの形式を設定する

sheet-to-jsonノードのデータタイプは、表示されるテキスト生データかを選択できます。

ヘッダーは、曖昧さのない最初の行をキーとして読み込むを選択します。

フローを実行する

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

debugタブで表示した取得した値
Excelデータと取得した値の対応関係

特定のセルだけデータを取得する

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

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

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

まとめ

今回はspreadsheet-inノードを使ったExcelファイルの操作をご紹介しました。

このノードを使って身の回りの業務の自動化に役立ててみようと思います。

今回使用したフローはDiscoverに公開済みです。ぜひお試しください。

参考