エクセルファイル(xls)を読み込んで中身を解析する方法をまとめます。javascript(node.js)のxlsjsを使えば、簡単に中のデータを取り出せるようです。

xlsjsはブラウザ上でも動作するjavascriptのパッケージです。

npm
xlsjs
動作確認できるDEMOページが用意されている

 Golden apple | Sony α7 + Sonnar T* FE 55mm F1.8 ZA  photo by tea ©

また、Excelファイルのシート名や各セルの番号を指定して、好きな箇所の値を取得する事も可能です。エクセルを立ち上げずに、手っ取り早く内容を処理したい時に便利なツールだと言えそうです。

Ads

npmのインストール

まずはnpmパッケージのxlsjsをインストールします。

bash
1
$ npm install xlsjs --save

node.jsやnpm、そしてコマンドラインについてご不明な場合は以下をご覧ください。

エクセルの中身をnode.jsで解析

それでは、実際にExcelファイルの中身をjavascriptで取り出してみましょう。下記の例ではsample.xlsというファイルのシート1に以下のようなデータが含まれているとします。

A1の内容 B1の内容 C1の内容
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5

次に、sample.jsを作成して以下のように記述します。

sample.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// このコードはnode.js v4.3以降で動作します。
let XLS = require('xlsjs')
let workbook = XLS.readFile('sample.xls')

let sheet_name_list = workbook.SheetNames
let Sheet1 = workbook.Sheets[sheet_name_list[0]] // シート1をデータを取得します
let Sheet1A1 = Sheet1['A1'].v // シート1の中のセルA1の値を取得します
let Sheet1_json = XLS.utils.sheet_to_json( Sheet1 ) // シート1のデータをJSONパースします

// シート1のセルA1の値をコンソールに出力します
console.log( `シート1のセルA1の値:\n${Sheet1A1}` )

// シート1の全ての値をコンソールに出力します
console.log( `シート1の全ての値:` )
for( let cl of Sheet1_json){
console.log( `${cl['A1の内容']} - ${cl['B1の内容']} - ${cl['C1の内容']}` )
}

それではnode.jsを実行してみましょう。

bash
1
$ node sample.js

次のような結果が表示され、sample.xlsの内容がパースされた事が確認できます。

bash
1
2
3
4
5
6
7
8
$ node sample.js
シート1のセルA1の値:
A1の内容
シート1の全ての値:
A2 - B2 - C2
A3 - B3 - C3
A4 - B4 - C4
A5 - B5 - C5