🙄

AlaSQLで、ExcelファイルからSQLを使って値を取り出す

2021/04/20に公開

概要

例として、以下のようなタスクリスト.xls から、Bさんの完了済のタスク一覧を取得してみた。ソースはGithubにある。

alasqlインストール~サンプルコード編集

$ npm init -y
$ npm install alasql
$ vi sample.js # コードは以下に示す

サンプルコード(sample.js)

const alasql = require('alasql')

const file = "タスクリスト.xls"
const sheet = "タスク"
const range = "B5:G100"
alasql.promise(`SELECT * FROM XLSX("${file}",{sheetid: "${sheet}", range: "${range}"}) WHERE [担当者] = "Bさん" AND [状況] = "完了"`)
  .then(res => {
    console.log(res);
  }).catch(err => {
    console.log(`${err}`);
  });

サンプルコード実行結果

$ node sample.js
[
  {
    'No.': 2,
    'タスク名称': 'ああああ',
    '期日': 44347,
    'タスク詳細': 'いいい',
    '担当者': 'Bさん',
    '状況': '完了'
  },
  {
    'No.': 5,
    'タスク名称': 'ああああ',
    '期日': 44347,
    'タスク詳細': 'いいい',
    '担当者': 'Bさん',
    '状況': '完了'
  },
  :
  :
  :
(以降省略)

解説

  • 取り込み対象Excelシートを、sheetidで指定できる
  • Excelシートの取り込み範囲を、rangeで指定できる
  • 列名が日本語の場合、[担当者]のように[]で囲む必要がある
  • 今回のサンプルではxls形式を使用したが、xlsx形式でも同様の実装で処理できるはず。(ソース)
    • XLSというモジュールがあったが、「To read .xls files, please include the xlsx lib」とのことで、XLSXモジュールを使用した。

Discussion