m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

node.jsでExcelファイルの読み書き

nodejsの勉強しているけど

コールバックのしくみをいまいち理解できていない
ファイルとかを読み込んだあとに動かすと思われるが引数でどんな値がくるのかよくわかっていないことがおおいので結構混乱する。

Excelでファイルの読み書きを行うことした

https://github.com/guyonroche/exceljs
↑これを使う

モジュールの取り込み

$ npm install exceljs

書き込み

app1.js
// 関連モジュール指定
var Excel = require('exceljs');

// ファイル名
var targetExcelPath = "テストファイル1.xlsx";

// workbook
var workbook = new Excel.Workbook();

// workbookの設定
workbook.creator = "Me";
workbook.lastModifiedBy = "Her";
workbook.created = new Date(1985, 8, 30);
workbook.modified = new Date();

// シートの追加
var sheet1 = workbook.addWorksheet("テスト1");
var sheet2 = workbook.addWorksheet("テスト2");
var sheet3 = workbook.addWorksheet("テスト3");

// セルに値を設定
for(var i=1;i<=10;i++){
    for(var j=1;j<=10;j++){
        sheet1.getCell(i, j).value = "i = " + i + " j = " + j;
    }
}

// 保存
workbook.xlsx.writeFile(targetExcelPath).then(function() {
    console.log("write ok!");
});

読み込み

app2.js
// 関連モジュール指定
var Excel = require('exceljs');

// ファイル名
var targetExcelPath = "テストファイル1.xlsx";

// ワークブック指定
var workbook = new Excel.Workbook();

// ファイルを読み込み
workbook.xlsx.readFile(targetExcelPath).then(function () {
    // シートを指定
    var sheet1 = workbook.getWorksheet(1);

    //
    for(var i=1;i<=10;i++){
        var str = "";
        for(var j=1;j<=10;j++){
            str += sheet1.getCell(i, j).value + ", ";
        }
        console.log(str);
    }

});

こんな感じ…

所感

一応、mac 上で実行したけど動いたのでおkとする。
日本語のファイル名やシート名も日本語を使えた。Excelファイルを集計するプログラムがなんか書けそう。
基本的にはExcelの制御はVBAばかりだったので他の方法でできるようになるのはうれしいかも

まあ、仕事以外ではExcelは使わないと思うけど…