なんだかGoodVibes

日々の勉強メモです。

【Node】エクセルの中身を読み込む

今回は、Nodeでエクセルの中身を読み込んでみます。


今回使用するのはxlsxモジュールです。
インストールしていない場合は、インストールしてください。

$ npm install xlsx --save


読み込むエクセルは、ソースファイルと同じ階層においてあるものとします。
準備したエクセルにはこんな感じでデータを入れています。
エクセルの名前は「sample.xlsx」です。
f:id:nandakagoodvibes:20191207185333p:plain


では、ソースを見ていきましょう。
今回は、指定したセルを読み込むところまでです。

// xlsxモジュールの読み込み
var xlsx = require('xlsx');

// エクセルブックの読み込み
var book = xlsx.readFile('sample.xlsx');

// シートの取得
var sheets = book.SheetNames;
console.log(sheets);

// ワークシートを設定
var workSheet = book.Sheets['Sheet1'];

// セルの範囲を取得する
var range = workSheet['!ref'];
console.log('range = ' + range);

// 指定のセルオブジェクトを取得する
var itemA1 = workSheet['A1'];
console.log(itemA1);



では、内容を細かく見ていきましょう。


xlsxモジュールの読み込み

今回は、Excelを操作するためのxlsxモジュールを読み込みます。

var xlsx = require('xlsx');


エクセルブックの読み込み

指定したエクセルが存在しない場合はエラーとなります。
先程紹介したエクセルを読み込んでいます。

var book = xlsx.readFile('sample.xlsx');


シートの取得

シートの一覧を取得できます。
今回は、「Sheet1」のみある状態です。

var sheets = book.SheetNames;
console.log(sheets);


出力結果はこのようになります。

[ 'Sheet1' ]


ワークシートを設定

今回は、Sheet1を設定しています。
先程読み込んだブックに存在するシートを設定しています。

var workSheet = book.Sheets['Sheet1'];


セルの範囲を取得する

現在、使用されているセルの範囲を取得します。

var range = workSheet['!ref'];
console.log('range = ' + range);


出力結果はこのようになります。

range = A1:B2

今回、値を入れている範囲がバッチリ取得できていますね。


指定のセルオブジェクトを取得する

セルのオブジェクトを取得します。
取得できるのはいくつかありますが、主に使用するのは
「t」「v」「w」とかになるのではないかなと思います。
t:データ型
v:実データ
w:表示されているデータ
になります。
軽くお話するとr,hはリッチテキストの内容になっています。
サンプルはセルA1の内容を取得しています。

var itemA1 = workSheet['A1'];
console.log(itemA1);


出力結果はこのようになります。

{ t: 's',
  v: 'A1です。',
  r: '<t>A1です。</t><phoneticPr fontId="1"/>',
  h: 'A1です。',
  w: 'A1です。' }


例えば実データだけ取得したい場合は以下のように書けばOKです。

var itemA1 = workSheet['A1'].v;


これでエクセルの中身を読み込むことができました。
今回は以上です。